int i = 0xffffffff;
System.out.println(i); 輸出-1
上面的程序有個問題
-
爲什麼
int i = 0xffffffff;
沒有報溢出錯誤,且輸出爲-1?因爲0xffffffff實際是二進制,程序中任何十進制,八進制,16進制的數在計算機底層都是二進制,表示成 X進制只是爲了讓人看明白,所以0xffffffff在電腦中就是32個1,而不是2的32次方減1。光是有底層表示還不夠,語言需要把底層表示解釋爲高層抽象。在java中,常數默認爲int類型(32bits),32個1解釋爲int就是-1。