在java中假设我有以下代码片段
byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
答案 0 :(得分:1)
++
的JLS规范说:
前缀增量表达式的类型是变量的类型。
....在添加之前,对值1和变量的值执行二进制数字提升(第5.6.2节)。 如果需要,在存储之前,通过缩小基元转换(第5.1.3节)和/或对变量类型进行限制转换(第5.1.7节)来缩小总和。前缀减量表达式的值是存储新值后变量的值。
(术语“缩小基元转换”是指类型转换......)
参考:JLS 15.15.1。
因此++b
是byte
,不需要显式转换。