Java中的自动装箱和拆箱

自动装箱

自动装箱是指将基本类型变量自动转换为其对应的包装器类对象。当原始值是-时,编译器会自动处理转换-

  • 作为参数传递给需要包装类对象的函数。

  • 分配给包装类类型的变量。

请看以下示例。

示例

import java.util.ArrayList;
import java.util.List;

public class Tester {
   public static void main(String[] args) {
      List<Integer> list = new ArrayList<>();

      for(int i = 0; i< 10; i++){
         //通过传递作为参数的自动装箱
         //将int值转换为Integer-
         //由编译器在编译过程中
         list.add(i);
      }

      System.out.println(list);

      char c = 'a';          
      //通过将char分配给Character对象来自动装箱
      Character ch = c;
      System.out.println(ch);
   }
}

输出结果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a

拆箱

取消装箱与自动装箱相反,它指的是将包装对象自动转换为其对应的原始变量。当包装对象为-时,编译器会自动处理转换-

  • 作为参数传递给需要原始数据类型变量的函数。

  • 分配给原始数据类型变量类型的变量。

请看以下示例。

示例

public class Tester {
   public static void main(String[] args) {
      Integer integer = new Integer(-10);
      //通过传递作为参数的自动装箱
      //整数对象转换为int-
      //由编译器在编译过程中
      int i = abs(integer);        
      System.out.println(i);

      //通过将Integer对象分配给int变量来进行自动装箱
      int j = integer;        
      System.out.println(j);
   }
 
   private static int abs(int i){
      return (i < 0)? -i: i;
   }
}

输出结果

10
-10