一 包装类
在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。
1.1 基本数据类型对应的包装类
对照下表可以发现,除了 char 和 int 之外,别的基本数据类型都是首字母大写。
1.2 装箱和拆箱
装箱和拆箱有两种方式,一种是手动装箱和拆箱。
手动装箱和手动拆箱则是指通过代码显式地进行类型转换。手动装箱需要使用包装类型的构造函数或者valueOf()方法,手动拆箱需要使用包装类型的xxxValue()方法,例如intValue()、doubleValue()等。
//手动装箱
int a = 1;
Integer A = Integer.valueOf(1);
//手动拆箱
int b = A.intValue();
可以看到在使用过程中,装箱和拆箱带来不少的代码量,所以为了减少开发者的负担,java 提供了自动机制。
自动装箱和自动拆箱是Java中的两个特性,可以简化代码的编写,使得基本类型和其对应的包装类型之间的转换更加方便。自动装箱是指将基本类型自动转换为对应的包装类型,而自动拆箱则是指将包装类型自动转换为对应的基本类型。例如,将int类型的值赋给Integer类型的变量,就是自动装箱;将Integer类型的值赋给int类型的变量,就是自动拆箱。
//自动装箱
int i = 2;
Integer I1 = i;
Integer I2 = (Integer)i