Java 中的自動裝箱/拆箱
JDK 5.0 中引入的自動裝箱和拆箱允許基本類型與拆箱器之間的無縫轉換類別。雖然看起來很簡單,但這些轉換的發生方式卻很複雜。
自動裝箱
自動裝箱不是使用建構函數,而是利用 valueOf() 方法包裝類別。此方法將原始值作為參數並傳回相應的包裝物件。例如:
int intValue = 0; Integer intObject = Integer.valueOf(intValue); // Calls Integer.valueOf(0)
使用 valueOf() 可以進行緩存,防止為每個裝箱操作建立新物件。
自動拆箱
相反,拆箱使用包裝類別的 intValue() (或對應的方法)從物件中提取原始值。此方法傳回儲存在包裝物件中的原始值。例如:
Integer intObject = new Integer(0); int intValue = intObject.intValue(); // Calls intObject.intValue()
具體範例
提供的範例說明僅允許 int 到 Integer 裝箱,因為 Integer 建構子只接受 int 參數。對於其他基本類型,必須使用 valueOf()。
同樣,當包裝物件拆箱為位元組或短整型時,也會遇到錯誤。這是因為 intValue() 直接將 int 值轉換為 int,而不是 byte 或短整數型。
結論
自動裝箱和拆箱涉及使用 valueOf( )以及分別在原始類型和包裝類別之間進行轉換的相應方法。這種機制增強了程式碼可讀性並簡化了操作,促進程式碼高效優雅。
以上是Java 中的自動裝箱和拆箱是如何運作的,其實作中有哪些細微差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!