1、对象包装器
对象包装器,听着好高级的样子,其实举个例子就知道是多么常见和普通了。
假设现在要定义一个整型数组列表,一般会定义成:
ArrayList<Integer> list = new ArrayList<>();
为什么尖括号内不是使用 int 呢,因为尖括号中的类型参数不允许的基本类型,所以不能写成 ArrayList<int>。这里就用到了Integer对象包装器类。
有时需要像上面一样将 int 这样的基本类型转换为对象,所有的基本类型都有一个与之对应的类,通常将这些类称为包装器,这些对象包装器类拥有很明显的名字:Integer, Long,Float,Double,Short,Byte,Character,Void 和 Boolean。包装器类不可变,一旦构造了包装器,就不能更改包装在其中的值。
2、自动装箱
所谓自动装箱,就是指编译器会自动将基本类型转换为对应的对象包装器,比如:
ArrayList<Integer> list = new ArrayList<>();
// 添加int类型的元素
list.add(3);
// 等同于:list.add(Integer.valueOf(3));
// 通过Integer.valueOf()将基本类型转化为Integer包装器
类似这种将基本类型的 int 值变换为包装器 Integer 对象就成为自动装箱。
相反地,当将一个 Integer 对象赋给一个 int 值时,将会自动拆箱
<