Java自动装箱和拆箱

时间:2021-07-05 04:41:18

jdk5.0之后,在基本数据类型封装类之间增加了自动装箱和拆箱的功能,其实“自动”的实现很简单,只是将装箱和拆箱通过编译器,进行了“自动补全”,省去了开发者的手动操作。

而进行封装类与对应基本数据类型之间的转换,原因很简单:

基本类型转换为引用类型后,就可以new对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者toString(当然用类名直接调用也可以,便于一眼看出该方法是静态的),还有就是如果集合中想存放基本类型,泛型的限定类型只能是对应的包装类型。

1.自动装箱

  a).基本实现

 1 public class Test {
2 public static void main(String[] args) {
3 // jdk5.0之前创建对象的例子.
4 Integer a = new Integer(1000);
5 // jdk5.0以后,自动装箱,当赋值符号左边是封装类引用,右边是"对应"的基本数据类型值时,
6 // 编译器将右边数值自动装箱,变成new Integer(1000);
7 Integer b = 1000;
8
9 //Long类型自动装箱
10 /*
11 * 无效的代码,编译不通过,赋值符号右边应该是longl类型的值
12 * Long c = 1000;
13 * */
14 Long c = 1000L;//正确的姿势
15
16 }
17 }

  b).说明

    自动装箱的规范格式为:赋值符号左边是封装类的引用,右边是“对应”的基本数据类型数值;

2.自动拆箱

  a).基本实现

1 public class Test {
2 public static void main(String[] args) {
3 Integer a = new Integer(1000);
4 // 自动拆箱,当赋值符号左边是基本数据类型变量,右边是"对应"封装类对象时,
5 // 编译器将右边对象拆箱,变成a.intValue()
6 int b = a;
7 double c = new Double(1000);
8 }
9 }

 b).说明

    自动拆箱的规范格式为:赋值符号左边是基本数据类型的变量,右边是“对应”的封装类的对象;