我們先看一段代碼:
1 byte b=2; 2 b=b+1; 3 System.out.println(b);
運行結果:
錯誤: 不兼容的類型: 從int轉換到byte可能會有損失
b=b+1;
^
1 個錯誤
報錯的原因是short變量在參與運算時會自動提升為int類型,b+1運算完成后變為int,int賦值給short報錯。
換成+=的情況:
1 byte b=2; 2 b+=1; 3 System.out.println(b);
編譯通過,輸出結果3。
這是因為b+=1並不是完全等價於b=b+1,而是隱含了強制類型轉換,相當於b=(short)(b+1)。
注意:+=不會進行溢出檢查
1 byte b=127; 2 b+=1; 3 System.out.println(b);
輸出結果是-128,開發中要特別注意。