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