1、基本類型
Java中有8種基本類型,分為4類,分別為:
整型:包括 byte 、 short、 int 、 long
泛型:float、double
字符型:char
布爾型:boolean
2、基本類型長度及默認值
名稱 |
長度(字節) |
默認值 |
取值范圍 |
byte |
1 |
0 |
-128~ 127 |
short |
2 |
0 |
-32768 ~ 32767 |
int |
4 |
0 |
-2147483648~2147483647 |
long |
8 |
0 |
-9223372036854774808~9223372036854774807 |
float |
4 |
0.0 |
3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的負45次方) |
double |
8 |
0.0 |
1.797693e+308~4.9000000e-324 |
char |
2 |
\u000 |
|
boolean |
官方沒有明確定義長度 |
flase |
true false |
3、包裝類型
基本類型 |
包裝類型 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
4、拆箱裝箱
拆箱,即,把基包裝類型轉換為基本類型
裝箱,即,基本類型轉換為對應的包裝類型。
如:Integer no = 1; //自動裝箱
Integer no2 = new Integer(2); //裝箱
自動裝箱的實際操作對應 Integer.valueOf(1);
在java文件生成class文件過程中會自動修改為Integer.valueOf(1),可以通過反編譯工具查看。
5、注意事項
1)包裝類型的比較不要使用==
如 Integer no1=10;Integer no2 =10; no1==no2;返回結果為true
Integer no1=200;Integer no2 =200; no1==no2;返回結果為false
Byte、Short、Integer、Long、Character的定義中都有一個緩存機制,-128~127對應的對象會緩存到緩存中,調用valueOf()方法時,會先判斷數據是否在這個范圍內,如果在范圍內,返回緩存對象,如果超出范圍,新建一個對象返回。
所以在這個范圍內的數值,用==比較會返回true。否則會引起一些間歇性的bug,很難定位。
2)java中的基本類型長度不會改變,在c、c++和c#中基本類型的長度會根據編輯器的位數變化,在java中不會變化。
3)boolean官方沒有規定長度,實際的占用空間長度和虛擬機有關系。
4)基本類型在虛擬機中是存儲在棧中。
更多內容可以關注 公眾號 MG驛站