先来看以下代码:
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和double类型在使用+=运算符时的行为差异。
先来看以下代码:
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)。

被折叠的 条评论
为什么被折叠?