在本教程中,我們將借助示例學(xué)習(xí)Java自動(dòng)裝箱和拆箱。
在自動(dòng)裝箱中,Java編譯器會(huì)自動(dòng)將原始類(lèi)型轉(zhuǎn)換為其相應(yīng)的包裝器類(lèi)對(duì)象。例如,
int a = 56; // 自動(dòng)裝箱 Integer aObj = a;
使用Java集合時(shí),自動(dòng)裝箱具有很大的優(yōu)勢(shì)。
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); //自動(dòng)裝箱 list.add(5); list.add(6); System.out.println("ArrayList: " + list); } }
輸出結(jié)果
ArrayList: [5, 6]
在上面的示例中,我們創(chuàng)建了一個(gè)Integer類(lèi)型的數(shù)組列表。因此,數(shù)組列表只能包含Integer類(lèi)型的對(duì)象。
注意這一行,
list.add(5);
在這里,我們傳遞原始類(lèi)型值。但是,由于自動(dòng)裝箱,原始值會(huì)自動(dòng)轉(zhuǎn)換為Integer對(duì)象并存儲(chǔ)在數(shù)組列表中。
在拆箱中,Java編譯器會(huì)自動(dòng)將包裝器類(lèi)對(duì)象轉(zhuǎn)換為其相應(yīng)的原始類(lèi)型。例如,
// 自動(dòng)裝箱 Integer aObj = 56; // 拆箱 int a = aObj;
像自動(dòng)裝箱一樣,拆箱也可以與Java集合一起使用。
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); //自動(dòng)裝箱 list.add(5); list.add(6); System.out.println("ArrayList: " + list); // 拆箱 int a = list.get(0); System.out.println("Value at index 0: " + a); } }
輸出結(jié)果
ArrayList: [5, 6] Value at index 0: 5
在上面的示例中,請(qǐng)注意以下行:
int a = list.get(0);
這里,get()方法返回索引0處的對(duì)象。但是,由于拆箱,對(duì)象被自動(dòng)轉(zhuǎn)換為原始類(lèi)型int并分配給變量a。