天天看點

a+=b和a=a+b是一樣的嗎?a+=b和a=a+b是一樣的嗎?

a+=b和a=a+b是一樣的嗎?

我們來先看一張圖

a+=b和a=a+b是一樣的嗎?a+=b和a=a+b是一樣的嗎?

a+=b 是先進行 a+b 的加法 ,然後将結果指派給a ,舉一個例子

public static void main(String[] args) {
        int a = 100;
        a = a + 1;
        System.out.println(a);

        int c = 100;
        c += 1;
        System.out.println(c);
        
    }
           

代碼運作結果如下

a+=b和a=a+b是一樣的嗎?a+=b和a=a+b是一樣的嗎?

看起來似乎是沒什麼差別

但是當我用byte類型的資料進行a = a + 1時卻發現直接報錯了

a+=b和a=a+b是一樣的嗎?a+=b和a=a+b是一樣的嗎?

報不能将int類型的資料轉換為byte , 那為什麼 a+=1 , 不會報這個類型轉換的錯誤呐, 我發現原來擴充的指派運算符底層隐含了強制類型轉換

a += 1; 其實就相當于 a = (byte)( a + 1);

而 a = a +1 ;在運算 a+1 過程中會将 a+1 轉化為 int 類型,而後面又将 a+1 指派給a ,此時就會發生類型轉換錯誤了。