在一般情况下,x+=y与x=x+y的作用是等价的。
但在有些情况下却并不是这样:
如下代码:
short s=3;
s+=1;//编译通过
s=s+1;//编译错误
s=s+1编译错误时因为左边s+1的运算结果为int类型,而等号右边变量为short类型。类型不匹配而造成编译错误。
s+=1编译正确是因为“+=”运算符在Java环境中会自动根据接收变量类型进行类型的强制转换。
通过上述示例可以知道:x+=y等价于x=x+y和类型强制转换两个操作。