1. 装箱拆箱的基本介绍
Java中本身具有八种基本数据类型,他们分别是:
基本数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
上面的表格我们可以注意到,八种基本数据类型对应都有自己的包装类。那么,什么是包装类呢?
由于基本数据类型本身并不是一个类,执行一些常用操作的时候往往需要编写方法完成操作。而包装类就提供了如 toString()、hashCode()、equals() 等的方法方便我们日常操作,在使用的时候我们只要将基本数据类型转换为对应的包装类(引用类型),我们就可以非常方便的调用这些方法。
另外,转换成包装类为泛型提供了支持。
public static void main(String[] args){
List<Integer> list = new ArrayList<>();//泛型必须是一个对象
List<int> list1 = new ArrayList<>();//报错,不支持基本类型
}
2. 手动装箱/拆箱
在 jdk5 以前,将基本数据类型转换为包装类需要我们手动。这里以基本数据类型 int 转换包装类 Integer 为例。
int n1 = 100;
//手动装箱 int -> Integer
Integer integer = new Integer(n1);
//或者 Integer integer = Integer.valueOf(n1);
//手动拆箱 Integer -> int
int i = integer.intValue();
3. 自动装箱/拆箱
在 jdk5 及以后,实现了自动装箱和拆箱工作。
int n2 = 200;
//自动装箱
Integer integer2 = n2;//底层使用的是 Integer.valueOf(n2)
//自动拆箱
int n3 = integer2;//底层使用的是 intValue()方法