本文正在参加「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);
换句话说,你的假设是正确的。
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞? 求关注❤️ 求分享? 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)