我了解到i+=2
是i=i+2
的简写。但现在我对此表示怀疑。
对于下面的代码,上面的知识并不适用:
byte b=0;
b=b+2; //Error:Required byte, Found int
上面的代码是有道理的,因为2
是int
类型,表达式返回int
值。
但是,下面的代码运行良好:
byte b=0; b+=2; //b stores 2 after += operation
这迫使我怀疑 +=
简写运算符在某种程度上比我所知道的更多。
请赐教。
最佳答案
如有疑问,您可以随时查看 Java 语言规范。在这种情况下,相关部分是 15.26.2,复合赋值运算符。
A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
所以您几乎是正确的,只是还添加了类型转换。在你的情况下:
b+=2;
符合 b=(byte)(b+2);
关于java - 简写赋值运算符,+=,真正的意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362017/