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

众所周知,在java中 a = a+b在大多数情况下都是可以替换为 a +=b的,那么这两种写法有什么区别呢?


public static int test() {
        System.out.println("aaaa");
	    return 1;
    }
	
public static void main(String[] args) {
        int a[] = new int[]{0,1,2,3,4,5,6,7,8,9,10};
        a[test()] += 1;
}

可以看到在main方法中调用了test()方法,如果a = a+b和a +=b 的区别没有区别,则会在控制台输出两次aaaa,但是结果呢?


可以看到只有一次,所以这里我们可以确定的 的是a += b执行实际过程实际是 是先计算出a的值,然后用一个temp对象存储,之后和b进行相加,然后将值赋值给a引用。

a = a+b 的执行过程则是先计算 a + b,然后再赋值给a引用,给a引用的时候如果 引用a 有计算过程,则会再次计算。

实际上这也就是+=运算符 和 +运算符的区别了。

顺便一提,这两个操作符还有一个区别是+=如果两边的操作数的精度不一样时会自动向低转化,如:


实际上和 a = (short)(a+ 65536);是一样的。

而a = a+b则不会自动转化,需要手动进行强制类型转化。

猜你喜欢

转载自blog.csdn.net/doujinlong1/article/details/80614158