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<Integer> list = new ArrayList<>();

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

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

输出

ArrayList: [5, 6]

在上面的示例中,我们创建了一个Integer类型的ArrayList。因此,该ArrayList只能存储Integer类型的对象。

注意这行:

list.add(5);

在这里,我们传入的是基本类型值。但是,由于自动装箱,该基本值会自动转换为Integer对象并存储在ArrayList中。


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<Integer> 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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战