Java SE 5.0 引入了自動裝箱與拆箱功能,使得基本類型與其對應的包裝類之間可以自動轉換。這項特性極大地簡化了代碼編寫,但若不了解其底層原理,可能會導致效能問題或邏輯錯誤。
int → Integer)。Integer → int)。編譯器在編譯階段會自動插入對應的 valueOf() 與 xxxValue() 方法調用。例如:
Integer i = 10; // 自動裝箱 → Integer.valueOf(10)
int n = i; // 自動拆箱 → i.intValue()
Integer.valueOf() 對 -128 到 127 之間的整數進行緩存,超出範圍則創建新對象。null,會拋出 NullPointerException。Integer.valueOf() 而非 new Integer() 以利用緩存。==,包裝類用 equals()。理解裝箱拆箱的內部運作,有助於編寫更高效、健壯的 Java 代碼。