基本類型 |
大小(字節) |
默認值 |
封裝類 |
byte |
1 |
(byte)0 |
Byte |
short |
2 |
(short)0 |
Short |
int |
4 |
0 |
Integer |
long |
8 |
0L |
Long |
float |
4 |
0.0f |
Float |
double |
8 |
0.0d |
Double |
boolean |
- |
false |
Boolean |
char |
2 |
\u0000(null) |
Character |
有的書也說是9中基本數據類型,包括了void。
基本類型所占的存儲空間是不變的:這種不變性也是java具有可移植性的原因之一。
基本類型是放在棧中,直接存儲值。
所有數值類型都有正負號,沒有無符號的數值類型。
注:
1.int是基本數據類型,Integer是int的封裝類,是引用類型。int默認值是0,而Integer默認值是null,所以Integer能區分出0和null的情況。一旦java看到null,就知道這個引用還沒有指向某個對象,再任何引用使用前,必須為其指定一個對象,否則會報錯。
2.基本數據類型在聲明時系統會自動給它分配空間,而引用類型聲明時只是分配了引用空間,必須通過實例化開辟數據空間之后才可以賦值。數組對象也是一個引用對象,將一個數組賦值給另一個數組時只是復制了一個引用,所以通過某一個數組所做的修改在另一個數組中也看的見。
雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之后都使用Java虛擬機中的int數據類型來代替,而boolean數組將會被編碼成Java虛擬機的byte數組,每個元素boolean元素占8位”。這樣我們可以得出boolean類型占了單獨使用是4個字節,在數組中又是1個字節。使用int的原因是,對於當下32位的處理器(CPU)來說,一次處理數據是32位(這里不是指的是32/64位系統,而是指CPU硬件層面),具有高效存取的特點。