byte(1字節)、short(2字節)、int(4字節)、long(16字節)
java中前綴加上0b或者0B就可以寫二進制數,前綴加上0就可以寫八進制數,前綴加上0x或者0X就可以寫十六進制數
一個字節是8位,最高位是符號位,最高位為0則是正數。最高位為1則是負數,
先了解原碼、反碼和補碼的表示規則:
0的表示:
原碼:有正零和負零之分,[+0]補=0000 0000,[-0]補=1000 0000;
反碼:同樣有兩種表示方法,[+0]反=0000 0000 ,[-0]反=1111 1111;
補碼:零只有一種表示方法,不分正負,[0]補=0000 0000;
所以可以得出取值范圍(因為0和其他一些問題,采用補碼,了解詳情https://blog.csdn.net/ai_yue/article/details/82777806):
byte:最大0111 1111 為 127 最小 1000 0000 為 -128
short:0111 1111 1111 1111 為 32767 1000 0000 0000 0000 為 -32768
int:0111 1111 1111 1111 1111 1111 1111 1111 為 2147483647
1000 0000 0000 0000 0000 0000 0000 0000 為 -2147483648
long: 9223372036854775807~-9223372036854775808
int和Integer問題:
Integer.valueOf(int i)方法,在傳入i的值不在-128和127之間時,便new出一個新的Integer對象;如果范圍在-128和127之間,則直接從IntegerCache緩存中取出i 對應的Integer對象。所以
Integer i = Integer.valueOf(127); Integer j = 127; System.out.println(i == j); //true Integer x = Integer.valueOf(128); Integer y = 128; System.out.println(x == y); //false