是a += 10
和a = a + 10
两个相同的,或者是有它们之间的一些区别?我在学习Java作业时遇到了这个问题。
正如您现在提到的强制转换...在这种情况下有所不同:
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] 删除。
我来说两句