Pra*_*anD 5 java casting operators
考虑以下代码:
byte b=1;
long l=1000;
b += l;
Run Code Online (Sandbox Code Playgroud)
我希望最后一个语句需要一个显式的强制转换因为,
b+=l
被评估为,b = b+l
而
(b+l)
part给出一个整数.没有显式强制转换,无法将整数分配给byte?
Jon*_*eet 17
那么首先,b+l
给出一个long
,而不是int
......
...但复合赋值运算符具有其他行为.根据JLS第15.26.2节:
形式E1 OP = E2中的化合物,赋值表达式等价于E1 =(T)((E1)OP(E2)),其中T是E1的类型,不同的是E1只计算一次.
请注意演员表T
.