先来看以下代码:
byte a = 126;
byte b = 127;
b = a + b;
b += a;
double c = 0.5;
int d = 1;
d = c + d;
d += c;
其中b = a + b 与 d = c + d是编译不过的。而 += 可以通过编译是因为 += 会隐式的将加操作的结果类型转换为持有结果类型,所以 b += a 经过了 (byte)(a+b)的过程,看反编译后的代码其实执行的是b = (byte)(a+b)。
先来看以下代码:
byte a = 126;
byte b = 127;
b = a + b;
b += a;
double c = 0.5;
int d = 1;
d = c + d;
d += c;
其中b = a + b 与 d = c + d是编译不过的。而 += 可以通过编译是因为 += 会隐式的将加操作的结果类型转换为持有结果类型,所以 b += a 经过了 (byte)(a+b)的过程,看反编译后的代码其实执行的是b = (byte)(a+b)。