a = a + b 与 a += b 的区别?

涉及到精度问题

如果 a 和 b 是同一数据类型,则没有区别

如果 a 和 b 不是同一类型,需要考虑隐式类型转换的问题

因为字面量 1 是 int 类型,它比 short 类型精度要高,因此不能隐式地将 int 类型下转型为 short 类型。

1
2
short s1 = 1;
// s1 = s1 + 1; 此时会报错

但是使用 += 运算符可以执行隐式类型转换。

1
s1 += 1;

上面的语句相当于将 s1 + 1 的计算结果进行了向下转型:

1
s1 = (short) (s1 + 1);