a+=b、a-=b、a*=b和a=a+b、a=a-b以及a=a*b的区别(易混淆)

乍一看,其实好像没啥区别,很容易理解为另一种形式的简写,这的确在一些情况下是成里的,但是仔细研究后其实运算过程中有一些细微的差别。

差别在于当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是一个算式的时候,便不能理解为是另一种形式的简写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值