a=a+b和a+=b的区别

首先,高兴啊高兴,因为今天问小叶这个问题,他说没有区别,哈哈,但是呢,我还是查到了区别,吼吼~~~因为,是他疏忽了。哦哦~

其次,谢谢武让的讲解。下面进入正题:

1、对于同样类型的a,b来说

两个式子执行的结果确实没有什么区别。但是从编译的角度看吧(武让说的),a+=b;执行的时候效率高。

2、对于不同类型的a,b来说

2.1 不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,记住两点:一、运算过程中,低精度的类型向高精度类型转换。二、如果将高精度的数值赋值给低精度类型变量,则必须要进行显性的强制转换。

2.2 对于a+=b;这个式子,要明确的一点是,+=运算中,结合了强制类型转换的功能,因此,不会出现编译错误;而对于a=a+b;这个式子,因为是简单的运算,没有类型转换,在编译过程中会报错,代码如下:

Code:
  1. publicclassTest{
  2. publicTest(){
  3. inta=5;
  4. charb=3;
  5. b+=a;//编译通过
  6. b=a+b;//编译出错
  7. }
  8. publicstaticvoidmain(String[]args){
  9. Testt=newTest();
  10. }
  11. }

要想改正上面的错误,只要像这样写:

Code:
  1. publicclassTest{
  2. publicTest(){
  3. inta=5;
  4. charb=3;
  5. b+=a;
  6. b=(char)(a+b);//编译通过
  7. }
  8. publicstaticvoidmain(String[]args){
  9. Testt=newTest();
  10. }
  11. }

因此,总的来说,a=a+b;和a+=b;并不是任何时候都等价,也要分情况的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值