Java基本資料型別
阿新 • • 發佈:2020-07-23
八種基本資料型別
- 字元型:char
- 布林型:boolean
- 數值型
- 整數型:byte,short,int,long
- 浮點型:float,double
整數型取值範圍
- byte:byte用1個位元組來儲存,範圍為-128(-2^7)(10000000)到127(2^7-1)(01111111),在變數初始化的時候,byte型別的預設值為0
- short:short用2個位元組儲存,範圍為-32,768 (-2^15)到32,767 (2^15-1),在變數初始化的時候,short型別的預設值為0
- int:int用4個位元組儲存,範圍為-2,147,483,648 (-2^31)到2,147,483,647 (2^31-1),在變數初始化的時候,int型別的預設值為0
- long:long用8個位元組儲存,範圍為-9,223,372,036,854,775,808 (-2^63)到9,223,372,036, 854,775,807 (2^63-1),在變數初始化的時候,long型別的預設值為0L或0l,也可直接寫為0
浮點型
位(bit)是衡量浮點數所需儲存空間的單位,通常為32位或64位,分別被叫作單精度和雙精度。
包裝型別
Java語言是一個面向物件的語言,但是Java中的基本資料型別卻是不面向物件的,這在實際使用時存在很多的不便,為了解決這個不足,在設計類時為每個基本資料型別設計了一個對應的類進行代表,這樣八個和基本資料型別對應的類統稱為包裝類(Wrapper Class)。
基本資料型別 | 包裝類 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
裝箱與拆箱
我們認為包裝類是對基本型別的包裝,所以,把基本資料型別轉換成包裝類的過程就是打包裝,英文對應於boxing,中文翻譯為裝箱。
反之,把包裝類轉換成基本資料型別的過程就是拆包裝,英文對應於unboxing,中文翻譯為拆箱。
自動裝箱與拆箱
Integer i =10; //自動裝箱 int b= i; //自動拆箱
自動裝箱: 就是將基本資料型別自動轉換成對應的包裝類。
自動拆箱:就是將包裝類自動轉換成對應的基本資料型別。
自動裝箱都是通過包裝類的valueOf()
方法來實現的.自動拆箱都是通過包裝類物件的xxxValue()
來實現的。
用到自動裝箱的場景
- 將基本資料型別放入集合類
- 包裝型別與基本資料型別進行大小比較
- 包裝型別的運算
- 三目運算子。三目運算子的語法規範。當第二,第三位運算元為基本型別和物件時,其中的物件就會拆箱為基本型別進行操作。
- 函式引數與返回值
自動拆裝箱與快取
Integer的操作上引入了一個新功能來節省記憶體和提高效能。整型物件通過使用相同的物件引用實現了快取和重用。適用於
- 適用於整數值區間-128 至 +127。
- 只適用於自動裝箱。使用建構函式建立物件不適用。
自動拆裝箱的問題
- 包裝物件的數值比較,不能簡單的使用
==
,雖然-128到127之間的數字可以,但是這個範圍之外還是需要使用equals
比較。 - 前面提到,有些場景會進行自動拆裝箱,同時也說過,由於自動拆箱,如果包裝類物件為null,那麼自動拆箱時就有可能丟擲NPE。
- 如果一個for迴圈中有大量拆裝箱操作,會浪費很多資源。