为什么这个赋值不需要显式转换?

时间:2012-11-28 10:59:20

标签: java casting operators

考虑以下代码:

byte b=1;
long l=1000;
b += l;

我希望最后一句话需要一个明确的演员,因为, b+=l被评估为b = b+l(b+l)部分给出一个整数。 没有显式强制转换,无法将整数分配给字节?

1 个答案:

答案 0 :(得分:17)

首先,b+l提供long,而不是int ......

...但是复合赋值运算符还有其他行为。根据{{​​3}}:

  

E1 op = E2形式的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型,但E1仅被评估一次。

请注意转化为T