关于Java += 操作符无法编译的问题

这个问题来自于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 += 操作符无法编译的问题

: » 关于Java += 操作符无法编译的问题

原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/251591.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论