我知道默认情况下,数字在java中存储为整数,但是
byte x = 10;
x = x + 10;
正在给出错误
byte x = 10;
x += 10;
正在编译
答案 0 :(得分:2)
JLS有答案
E1 op = E2形式的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型,但E1仅被评估一次。
short x = 3;
x += 4.6;
并导致x的值为7,因为它相当于:
short x = 3;
x = (short)(x + 4.6);
所以在你的情况下你的第二个陈述等于
x = (byte) x + 10;
这就是编译器感到高兴的原因。