byte b=1、b=b+1、b+=1


第一個正確,第二個報錯,第三個正確。根本原因就是 byte相計算的時候如果不進行強制轉換,都會編譯錯誤的。

        byte b=1,檢查右邊沒有超過byte的范圍(-128到127)。系統強轉為1為byte型;      

        b=b+1,1默認為int類型,b自動轉型為int與1做加法,結果是int類型的。把int類型賦給byte類型b.順便說一下,如果b=b+1改為b+=1就沒錯了。

        b += 1,其實等價於 b = (byte)(b+1);底層會對這個結果進行強轉的,所以它編譯的時候沒事,如果b是127, 那么加1后變成128了,成了int類型了,超過了byte類型的最大范圍了,系統會強轉,把int類型的 前面三個高位丟棄,丟棄后,如果剩下的一位中,最高位為1,則取反加一,就成了負數了,如果最高位為0,直接把值賦給b 。


免責聲明!

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



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