在Java中,Java對每種基本數據類型都提供了對象的包裝器類型。看下表:
包裝類對應表
基本數據類型 | 包裝類 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
在Java SE5之前,如果要生成1個數值為50的Integer對象,需要這么進行:
Integer obj = new Integer(50);
而在Java SE5開始,Java就封裝了自動裝箱的特性,定義數值是這樣做就能夠:
Integer obj = 50;
這個進程中自動根據數值創建Integer對象,就叫裝箱;
簡單1點說,裝箱就是 自動將基本數據類型轉換為包裝器類型;拆箱就是 自動將包裝器類型轉換為基本數據類型。
那甚么是拆箱?和裝箱對象,就是將包裝器類型轉換成基本數據類型。拆裝箱的進程以下圖:
我們以Double類型為例,先看下面的1段代碼:
public class Main{
public static void main(String[] args){
Double DB = 10.34;
double db=DB;
}
}
然后我們對這段代碼進行反編譯,結果以下:
然后我們換成Integer類型的再試試,直接看結果:
看出有甚么相同來了沒有,程序在自動裝箱的時候自動調用valueof方法,在拆箱的時候,調用相應的類型的”**.**Value”方法。
由此可以看出,程序的自動裝箱是調用包裝器類型的valueof方法,而拆箱是調用包裝器的”**.**Value”方法來實現的。