本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
提问:为什么 Java 的 +、-、、/+复合分配操作员不需要铸造?
直到今天,我还这么想:
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 语言规范证实了您的建议。
例如,以下代码是正确的:
short x = 3; x += 4.6; 并导致x具有值7,因为它相当于:
short x = 3; x = (short)(x + 4.6);
高分回答:
与这些问题一样,JLS 持有答案。在这种情况下,§15.26.2 复合分配操作员。摘录:
表格的复合分配表达等同于,类型在哪里,但只评估一次。E1 op= E2E1 = (T)((E1) op (E2))TE1E1
引用的一个例子,从 15.26.2
[...]以下代码是正确的:
short x = 3; x += 4.6; 并导致x具有值7,因为它相当于:
short x = 3; x = (short)(x + 4.6); 换句话说,你的假设是正确的。
文章翻译自 *.com/questions/8…
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞???? 求关注❤️ 求分享???? 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️