自動裝箱與自動拆箱
阿新 • • 發佈:2022-01-29
《演算法(第四版)》1.3 節在介紹揹包、佇列和棧時,順便介紹了一下 Java 自動裝箱與自動拆箱。下面簡單總結其相關內容。
Java 中的每一種原始資料型別都有其對應的引用型別:boolean、byte、char、double、float、int、long 和 short 分別對應著 Boolean、Byte、Character、Double、Float、Integer、Long 和 Short。
在處理賦值語句、方法的引數和算術或邏輯表示式時,Java 會自動轉換原始資料型別和對應的引用型別。自動將一個原始資料型別轉換為一個引用型別被稱為自動裝箱,自動將一個引用型別轉換為一個原始資料型別被稱為自動拆箱。
Integer i = 1; // 自動裝箱 (int -> Integer)
int j = i; // 自動拆箱 (Integer -> int)
自動裝箱與自動拆箱相當程度上是為泛型提供服務的。在泛型中,型別引數必須被例項化為引用型別,自動裝箱和自動拆箱使泛型程式碼處理原始資料型別變得很方便。
Stack<Integer> stack = new Stack<Integer>(); stack.push(17); // 自動裝箱 (int -> Integer) int i = stack.pop(); // 自動拆箱 (Integer -> int)