在本教程中,我們將借助示例學習Java 包裝類(Wrapper)。
Java中的包裝類用于將原始類型(int,char,float等)轉(zhuǎn)換為相應的對象。
8個基本類型中的每一個都有對應的包裝器類。
原始類型 | 包裝類 |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
我們還可以使用valueOf()方法將原始類型轉(zhuǎn)換為相應的對象。
class Main { public static void main(String[] args) { //創(chuàng)建原始類型 int a = 5; double b = 5.65; //轉(zhuǎn)換為包裝對象 Integer aObj = Integer.valueOf(a); Double bObj = Double.valueOf(b); if(aObj instanceof Integer) { System.out.println("創(chuàng)建一個Integer對象。"); } if(bObj instanceof Double) { System.out.println("創(chuàng)建一個Double對象。"); } } }
輸出結(jié)果
創(chuàng)建一個Integer對象。 創(chuàng)建一個Double對象。
在上面的示例中,我們使用了valueOf()將原始類型轉(zhuǎn)換為對象的方法。
在這里,我們使用instanceof運算符來檢查生成的對象是否屬于Integer或Double類型。
但是,Java編譯器可以直接將原始類型轉(zhuǎn)換為相應的對象。例如,
int a = 5; //轉(zhuǎn)換為對象 Integer aObj = a; double b = 5.6; //轉(zhuǎn)換為對象 Double bObj = b;
此過程稱為自動裝箱。要了解更多信息,請訪問Java自動裝箱和拆箱。
注意:我們還可以使用包裝類(Wrapper)構造函數(shù)將原始類型轉(zhuǎn)換為包裝對象。但是在Java 9之后,不再使用構造函數(shù)。
要將對象轉(zhuǎn)換為原始類型,我們可以使用每個包裝類中對應的值方法(intValue()、doubleValue()等)。
class Main { public static void main(String[] args) { //創(chuàng)建包裝類的對象 Integer aObj = Integer.valueOf(23); Double bObj = Double.valueOf(5.55); //轉(zhuǎn)換為原始類型 int a = aObj.intValue(); double b = bObj.doubleValue(); System.out.println("a的值: " + a); System.out.println("b的值: " + b); } }
輸出結(jié)果
a的值: 23 b的值: 5.55
在上面的示例中,我們使用了intValue() 和 doubleValue()方法將Integerand和Double對象轉(zhuǎn)換為相應的原始基本類型。
但是,Java編譯器可以自動將對象轉(zhuǎn)換為相應的原始類型。例如,
Integer aObj = Integer.valueOf(2); //轉(zhuǎn)換為int類型 int a = aObj; Double bObj = Double.valueOf(5.55); //轉(zhuǎn)換為double類型 double b = bObj;
此過程稱為拆箱。要了解更多信息,請訪問Java自動裝箱和拆箱。
在Java中,有時我們可能需要使用對象而不是原始數(shù)據(jù)類型。例如,在使用集合時。
// 錯誤 ArrayList<int> list = new ArrayList<>(); //正常運行 ArrayList<Integer> list = new ArrayList<>();
在這種情況下,包裝器類可以幫助我們將原始數(shù)據(jù)類型用作對象。
我們可以將空值存儲在包裝對象中。例如,
//將生成一個錯誤 int a = null; // 正常運行 Integer a = null;
注意:基本類型比相應的對象更有效。因此,當需要效率時,總是建議使用原始類型。