这个问题来自于stackoverflow。我看这个问题被讨论的非常多!在这里分享一下,做个总结!以后就可以装逼给码农看!
直到今天有人认为下面这个例子:
i += j;
只是一个简写。它被认为类似于下面的写法:
i = i + j;
这样做其实是错的。例如下面的例子,就无法通过编译:
int i = 5; long j = 8;
然而 i = i + j; 没法编译,而 i += j; 就可以编译。
这意味着i += j; 实际上是i = (type of i) (i + j)的简写么?
写到这里,我们就需要回顾一下java的复合运算符。
E1 op= E2 型的复合赋值表达式等价于 E1 = (T)((E1) op (E2)),这里 T 是 E1 的类型,不同的是 E1 只计算一次。
一个例子,引自 §15.26.2
下面的代码是正确的:
short x = 3; x += 4.6;
x的结果等于7,因为它等价于:
short x = 3; x = (short)(x + 4.6);
看到这里,就证明了你的猜测是正确的。
: » 关于Java += 操作符无法编译的问题
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/251591.html