📜  Java自动装箱和拆箱(1)

📅  最后修改于: 2023-12-03 14:43:04.736000             🧑  作者: Mango

Java自动装箱和拆箱

什么是自动装箱和拆箱?

在Java中,基本数据类型(int、float、double等)不能直接作为对象来处理。所以需要使用包装类(Integer、Float、Double等)来处理基本数据类型的值。装箱(boxing)是将基本数据类型转换为包装类的过程,而拆箱(unboxing)则是将包装类转换为基本数据类型的过程。在Java 5中,引入了自动装箱和拆箱,使得装箱和拆箱的过程更加简便。

自动装箱和拆箱的语法

自动装箱和拆箱是在编译期间进行的,所以可以减少代码的编写量。自动装箱和拆箱的语法如下:

// 自动装箱
Integer i = 100; // 相当于 Integer i = Integer.valueOf(100);

// 自动拆箱
int j = i; // 相当于 int j = i.intValue();
自动装箱和拆箱的优缺点

自动装箱和拆箱的优点是可以减少代码的编写量,提高代码的可读性。同时,自动装箱和拆箱也方便了集合类的使用,因为集合类只能存储对象,而基本数据类型不是对象类型。自动装箱和拆箱也允许开发人员将基本数据类型和对象类型混合使用,使代码更加灵活。

自动装箱和拆箱的缺点是会影响程序的性能。因为自动装箱和拆箱需要使用额外的内存空间和处理时间,所以在处理大量数据时需要注意。此外,当自动装箱和拆箱发生在循环内部时,可能会导致额外的时间和空间开销。

示例代码
// 自动装箱和拆箱示例
public class AutoBoxingAndUnboxing {
    public static void main(String[] args) {
        Integer i = 100; // 自动装箱
        System.out.println(i);

        int j = i; // 自动拆箱
        System.out.println(j);

        List<Integer> list = new ArrayList<>();
        list.add(1); // 自动装箱
        list.add(2); // 自动装箱
        list.add(3); // 自动装箱

        int sum = 0;
        for (Integer num : list) {
            sum += num; // 自动拆箱
        }
        System.out.println(sum);
    }
}