📜  Java自动装箱和拆箱

📅  最后修改于: 2020-09-26 13:38:46             🧑  作者: Mango

在本教程中,我们将借助示例学习Java自动装箱和拆箱。

Java自动装箱-包装器对象的原始类型

自动装箱中 ,Java编译器会自动将原始类型转换为其相应的包装器类对象。例如,

int a = 56;

// autoboxing
Integer aObj = a;

使用Java集合时, 自动装箱具有很大的优势。


示例1:Java自动装箱

import java.util.ArrayList;

class Main {
   public static void main(String[] args) {

      ArrayList list = new ArrayList<>();

      //autoboxing
      list.add(5);
      list.add(6);

      System.out.println("ArrayList: " + list);
   }
}

输出

ArrayList: [5, 6]

在上面的示例中,我们创建了一个Integer类型的数组列表。因此,数组列表只能容纳Integer类型的对象。

注意这一行,

list.add(5);

在这里,我们传递原始类型值。但是,由于自动装箱 ,原始值会自动转换为Integer对象并存储在数组列表中。


Java拆箱-包装器对象为原始类型

拆箱中 ,Java编译器会自动将包装器类对象转换为其相应的原始类型。例如,

// autoboxing
Integer aObj = 56;

// unboxing
int a = aObj;

自动 装箱一样, 拆箱也可以与Java集合一起使用。


示例2:Java拆箱

import java.util.ArrayList;

class Main {
   public static void main(String[] args) {

      ArrayList list = new ArrayList<>();

      //autoboxing
      list.add(5);
      list.add(6);

      System.out.println("ArrayList: " + list);

      // unboxing
      int a = list.get(0);
      System.out.println("Value at index 0: " + a);
   }
}

输出

ArrayList: [5, 6]
Value at index 0: 5

在上面的示例中,请注意以下行:

int a = list.get(0);

在这里, get()方法返回索引为0的对象。但是,由于取消装箱 ,对象会自动转换为基本类型int并分配给变量a