短手赋值运算符,+ =,真意?

Cᴴᴀ*_*ᴴᴀZ 5 java shorthand implicit-cast assignment-operator

我了解到这i+=2是缺点i=i+2.但现在我怀疑它.对于以下代码,上述知识没有任何好处:

byte b=0; B = B + 2; //错误:必需字节,找到int

上面的代码是合理的,因为2int类型和表达式返回int值.

但是,以下代码运行正常:

byte b=0; b+=2; //b stores 2 after += operation

这迫使我怀疑+=短手操作员比我所知道的更多.请赐教.

Ant*_*ony 10

如有疑问,您可以随时查看Java语言规范.在这种情况下,相关部分是15.26.2,复合赋值运算符.

形式E1 OP = E2中的化合物,赋值表达式等价于E1 =(T)((E1)OP(E2)),其中T是E1的类型,不同的是E1只计算一次.

所以你几乎是正确的,除了添加了一个演员阵容.在您的情况下: b+=2;符合条件b=(byte)(b+2);