面对这样的加法属性。我们有两个变量:
int x = 1;
long y = 2;
y
必须添加到x
. 如果我们使用简单的加法,IDE 将拒绝编译:
x = x + y; //Incopatible types
如果我们使用以下结构:
x += y;
然后代码被正确处理。
错误很明显 - 我们正在尝试将其推long
入int
,IDE 发现潜在错误并且不允许编译。但是为什么会在第二种情况下通过呢?
面对这样的加法属性。我们有两个变量:
int x = 1;
long y = 2;
y
必须添加到x
. 如果我们使用简单的加法,IDE 将拒绝编译:
x = x + y; //Incopatible types
如果我们使用以下结构:
x += y;
然后代码被正确处理。
错误很明显 - 我们正在尝试将其推long
入int
,IDE 发现潜在错误并且不允许编译。但是为什么会在第二种情况下通过呢?
var1 op= var2
等价于var1 = (T)((var1) op (var2))
, 其中 op 是运算符。例子:
这一行
x += y;
相当于最下面的一行:文档:15.26.2。复合赋值运算符