Java中a + = 10和a = a + 10之间的区别?

库尔奇老师:

a += 10a = a + 10两个相同的,或者是有它们之间的一些区别?我在学习Java作业时遇到了这个问题。

乔恩·斯基特(Jon Skeet):

正如您现在提到的强制转换...在这种情况下有所不同:

byte a = 5;
a += 10; // Valid
a = a + 10; // Invalid, as the expression "a + 10" is of type int

从Java语言规范第15.26.2节开始

形式的复合赋值表达式E1 op= E2等效于E1 = (T)((E1) op (E2)),其中T是的类型E1,不同之在于该表达式E1仅被评估一次。

有趣的是,他们在规范中给出的示例:

short x = 3;
x += 4.6;

是有效的在Java中,但不是在C#...基本上C#中的编译器执行特殊壳体+ =和- =以确保表达是目标类型中的一个或是目标类型的范围内的文字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章