1. 程式人生 > >Java中自動裝箱與自動拆箱機制

Java中自動裝箱與自動拆箱機制

以下筆記來自於《演算法 (第4版)》。

 

型別引數必須被例項化為引用型別,因此Java有一種特殊機制來使泛型程式碼能夠處理原始資料型別。

Java中的封裝型別都是原始資料型別所對應的引用型別:Boolean Byte Character Double Float Integer Long Short分別對應著boolean byte char double float int long和short。在處理賦值語句、方法的引數和算數或邏輯表示式時,Java會自動在飲用型別和對應的原始資料型別之間進行轉換。在這裡,這種轉換有助於我們同時使用泛型和原始資料型別。

例如:

Stack<Integer> stack = new Stack<Integer>();

stack.push(17);  //自動裝箱(int -> Integer)

int i =stack.pop();  //自動拆箱(Integer-> int)

 

自動將一個原始資料型別轉換為一個封裝型別被稱為自動裝箱。

自動將一個封裝型別轉換為一個原始資料型別被稱為自動拆箱。

 

在上述例子中,當我們將一個原始型別的值17傳遞給push()方法時,Java將它的型別自動轉換(自動裝箱)為Integer。pop()方法返回了一個Integer 型別的值,Java在將它賦予變數i之前將它的型別自動轉換(自動拆箱)為了int。