java中a=a+1和a+=1的區別


我們先看一段代碼:
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,開發中要特別注意。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM