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

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

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

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

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

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

Code:
  1. public class Test{  
  2. public Test(){  
  3. int a = 5;  
  4. char b = 3;  
  5.   
  6. b+=a;//编译通过  
  7. b=a+b;//编译出错  
  8.   
  9. }  
  10. public static void main(String[] args){  
  11. Test t = new Test();  
  12. }  
  13. }  

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

Code:
  1. public class Test{  
  2. public Test(){  
  3. int a = 5;  
  4. char b = 3;  
  5.   
  6. b+=a;  
  7. b=(char)(a+b);//编译通过  
  8.   
  9. }  
  10. public static void main(String[] args){  
  11. Test t = new Test();  
  12. }  
  13. }  

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值