1. 程式人生 > 實用技巧 >Java基本資料型別

Java基本資料型別

八種基本資料型別

  1. 字元型:char
  2. 布林型:boolean
  3. 數值型
    1. 整數型:byte,short,int,long
    2. 浮點型: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()來實現的。

用到自動裝箱的場景

  1. 將基本資料型別放入集合類
  2. 包裝型別與基本資料型別進行大小比較
  3. 包裝型別的運算
  4. 三目運算子。三目運算子的語法規範。當第二,第三位運算元為基本型別和物件時,其中的物件就會拆箱為基本型別進行操作。
  5. 函式引數與返回值

自動拆裝箱與快取

Integer的操作上引入了一個新功能來節省記憶體和提高效能。整型物件通過使用相同的物件引用實現了快取和重用。適用於

  • 適用於整數值區間-128 至 +127。
  • 只適用於自動裝箱。使用建構函式建立物件不適用。

自動拆裝箱的問題

  • 包裝物件的數值比較,不能簡單的使用==,雖然-128到127之間的數字可以,但是這個範圍之外還是需要使用equals比較。
  • 前面提到,有些場景會進行自動拆裝箱,同時也說過,由於自動拆箱,如果包裝類物件為null,那麼自動拆箱時就有可能丟擲NPE。
  • 如果一個for迴圈中有大量拆裝箱操作,會浪費很多資源。