• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

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

JAVA web前端中文站 2年前 (2017-05-15) 839次浏览 未收录 0个评论

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

更多精彩内容请看 web 前端中文站
http://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);

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

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


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于 Java += 操作符无法编译的问题
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址