聲明:若有不對,請聯繫筆者,及時改正,共同窗習。
ide
先上一段代碼:
學習
- public static void main(String[] args) {
- byte b = (byte)(129);
- System.out.println(b);
- }
main方法裏面有這麼一段。
spa
你們都知道Java裏面byte取值範圍在-128~127之間,上面這段代碼很顯然已經超出byte範圍,但不會報錯。也能輸出結果,結果爲-128。爲何會是這個結果呢?it
涉及到補碼運算。過程是先將b,就是127轉換成Int型的,而後加1,最後截掉高八位,剩下10000000,Byte是有符號的,因此這個值全部爲取反在加1就是它的絕對值,因此這個數就是-128。class
歡迎討論。方法