首先,高兴啊高兴,因为今天问小叶这个问题,他说没有区别,哈哈,但是呢,我还是查到了区别,吼吼~~~因为,是他疏忽了。哦哦~
其次,谢谢武让的讲解。下面进入正题:
1、对于同样类型的a,b来说
两个式子执行的结果确实没有什么区别。但是从编译的角度看吧(武让说的),a+=b;执行的时候效率高。
2、对于不同类型的a,b来说
2.1 不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,记住两点:一、运算过程中,低精度的类型向高精度类型转换。二、如果将高精度的数值赋值给低精度类型变量,则必须要进行显性的强制转换。
2.2 对于a+=b;这个式子,要明确的一点是,+=运算中,结合了强制类型转换的功能,因此,不会出现编译错误;而对于a=a+b;这个式子,因为是简单的运算,没有类型转换,在编译过程中会报错,代码如下:
- public class Test{
- public Test(){
- int a = 5;
- char b = 3;
- b+=a;//编译通过
- b=a+b;//编译出错
- }
- public static void main(String[] args){
- Test t = new Test();
- }
- }
要想改正上面的错误,只要像这样写:
- public class Test{
- public Test(){
- int a = 5;
- char b = 3;
- b+=a;
- b=(char)(a+b);//编译通过
- }
- public static void main(String[] args){
- Test t = new Test();
- }
- }
因此,总的来说,a=a+b;和a+=b;并不是任何时候都等价,也要分情况的。
本文探讨了在编程中a=a+b与a+=b两种表达式的区别。尽管在相同类型的情况下两者效果相似,但从编译效率和类型转换角度来看,a+=b在执行时效率更高且自动处理类型转换,而a=a+b可能需要显式转换以避免编译错误。当涉及不同类型的变量时,a+=b能避免编译错误,而a=a+b则需要手动强制转换。
1023





