算法(4th ed)(117):基础——背包、队列和栈 5.1.2

阅读数:40 2019 年 11 月 2 日 12:27

算法(4th ed)(117):基础——背包、队列和栈 5.1.2

(API:自动装箱)

类型参数必须被实例化为引用类型,因此 Java 有一种特殊机制来使泛型代码能够处理原始数据类型。我们还记得 Java 的封装类型都是原始数据类型所对应的引用类型:BooleanByteCharacterDoubleFloatIntegerLongShort 分别对应着 booleanbytechardoublefloatintlongshort。在处理赋值语句、方法的参数和算术或逻辑表达式时,Java 会自动在引用类型和对应的原始数据类型之间进行转换。在这里,这种转换有助于我们同时使用泛型和原始数据类型。例如:

复制代码
Stack<Integer> stack = new Stack<Integer>();
stack.push(17); // 自动装箱 (int -> Integer)
int i = stack.pop(); // 自动拆箱 (Integer -> int)

自动将一个原始数据类型转换为一个封装类型被称为自动装箱,自动将一个封装类型转换为一个原始数据类型被称为自动拆箱。在这个例子中,当我们将一个原始类型的值 17 传递给push() 方法时,Java 将它的类型自动转换(自动装箱)为 Integerpop() 方法返回了一个 Integer 类型的值,Java 在将它赋予变量 i 之前将它的类型自动转换(自动拆箱)为了 int

评论

发布