乍一看,其实好像没啥区别,很容易理解为另一种形式的简写,这的确在一些情况下是成里的,但是仔细研究后其实运算过程中有一些细微的差别。
差别在于当b是一个算式的时候,往往计算的结果可能不如预期来看下面两个代码
int a = 10;
int b = 20;
System.out.println(a-=b);
这个输出结果毫无疑问是-10
但是当-=右边是一个算式的时候就需要注意了
int a = 10;
int b = 20;
System.out.println(a-=b+3);
这个输出结果是-13
也就是说计算过程是a=a-(b+3)即-=
右面的符号会优先进行计算b+3被括号括起来,然后再和a计算
这在字符的运算过程中及其容易出现问题比如
String s = "abc";
System.out.println(s+=s.charAt(0)+s.charAt(1));
此时计算过程为s=s+(s.charAt(0)+s.charAt(1))
由于char计算是转成对应的ASCII码来计算,所以结果就成了
abc195
195来自97(a)+98(b)
因此弄懂+=的运算过程十分重要,当b是一个算式的时候,便不能理解为是另一种形式的简写。