我知道默认情况下数字在 Java 中存储为整数,但是
byte x = 10;
x = x + 10;
在
byte x = 10;
x += 10;
编译正常
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);
所以在你的情况下,你的第二个陈述 equlas 到
x = (byte) x + 10;
这就是编译器感到高兴的原因。