为什么 Java 的 +、-、*、*/+复合分配操作不需要转换?| Java Debug 笔记

本文正在参加「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块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️

上一篇:oracle函数大全


下一篇:CodeForces-1178F1 Short Colorful Strip 区间DP