由於java中的自動轉型,所以System.out.println((byte)128) 輸出爲-128。 在java中默認整型是int類型,int類型是4字節,32位。而byte類型是1字節,8位,而java中的二進制都是採用補碼形式存儲: ⑴一個數爲正,則它的原碼、反碼、補碼相同 ⑵一個數爲負,則符號位爲1,其他各位是對原碼取反,而後加1。就int類型的128而言: 原碼爲:0000 0000 0000 0000 0000 0000 1000 0000 由於爲正數,因此補碼與原碼相同。 當(byte)128時,將int類型強制轉換爲byte類型。截斷高24位,保留低8位,也就是1000 0000。 在System.out.println調用時,操做數棧會將其boolean、byte、char 以及 short當作int進行計算,此時進行的是有符號填充操做,前24位所有爲1,後8位1000 0000。 而後補碼-1再取反:1000 0000 0000 0000 0000 0000 1000 0000 所以System.out.println((byte)128) 輸出爲-128,即1000 0000 0000 1000 0000。 java