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

这个问题来自于stackoverflow。我看这个问题被讨论的非常多!在这里分享一下,做个总结!以后就可以装逼给码农看!

更多精彩内容请看 web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

直到今天有人认为下面这个例子:

 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);

看到这里,就证明了你的猜测是正确的。

【注:本文源自网络文章资源,由站长整理发布】

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到