Java 包装类

在 Java 中的包装类是原始数据类型对应的对象类型。在本教程中,我们将通过示例了解 Java 包装类。

在本教程中,我们将通过示例了解 Java 包装类。

在 Java 中包装类型是原始类型(转换 intcharfloat 等)对应的对象类型。

8 种原始类型对应的包装类如下:

原始类型 包装类
byte Byte
boolean Boolean
char Character
double Double
float Float
int Integer
long Long
short Short

将原始类型转换为包装对象

我们可以使用包装类的 valueOf() 方法将数据从原始类型转换为相应的对象。

示例 1:原始类型转为包装类型

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

    // 原始类型
    int a = 5;
    double b = 5.65;

    // 转为包装类型
    Integer aObj = Integer.valueOf(a);
    Double bObj = Double.valueOf(b);

    if (aObj instanceof Integer) {
      System.out.println("aObj 是一个 Integer 类型的对象。");
    }

    if (bObj instanceof Double) {
      System.out.println("bObj 是一个 Double 类型的对象。");
    }
  }
}

输出

aObj 是一个 Integer 类型的对象。
bObj 是一个 Double 类型的对象。

在上面的例子中,我们使用了包装类的 valueOf() 方法将原始类型转换为对象类型,然后使用了 instanceof 运算符来检查生成的对象的类型。

Java 编译器可以直接将原始类型转换为相应的对象。例如,

int a = 5;
Integer aObj = a;

double b = 5.6;
Double bObj = b;

这个过程被称为自动装箱。请访问 Java 自动装箱和拆箱了解更多信息,。

注意:我们还可以使用包装类构造函数将原始类型转换为包装对象。但是在 Java 9 之后弃用了包装类型的构造函数。

将对象转换为原始类型

每个包装类中都提供了相应的方法将对象转为原始类型,具体方法如下:

  • Byte.byteValue()
  • Boolean.booleanValue()
  • Character.charValue()
  • Double.doubleValue()
  • Float.floatValue()
  • Integer.intValue()
  • Long.longValue()
  • Short.shortValue()

示例 2:将对象转成原始类型

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

    // 包装类对象
    Integer aObj = Integer.valueOf(23);
    Double bObj = Double.valueOf(5.55);

    // 转成原始类型
    int a = aObj.intValue();
    double b = bObj.doubleValue();

    System.out.println("The value of a: " + a);
    System.out.println("The value of b: " + b);
  }
}

输出

The value of a: 23
The value of b: 5.55

在上面的例子中,我们使用 intValue()doubleValue() 方法将 Integer and Double 对象转换为相应的原始类型。

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

Integer aObj = Integer.valueOf(2);
int a = aObj;

Double bObj = Double.valueOf(5.55);
double b = bObj;

此过程称为拆箱。请访问 Java 自动装箱和拆箱了解更多信息,。

包装类的优点

  • 在 Java 中,有时我们需要使用包装类型而不是原始数据类型。例如,在处理集合时。

    // 错误
    ArrayList<int> list = new ArrayList<>();
    
    // 正确
    ArrayList<Integer> list = new ArrayList<>();
    

    这是因为在 Java 中, 泛型类型不能使用原始类型。

  • 包装类型的对象可以为 null。例如,

    // 错误
    int a = null;
    
    // 正确
    Integer a = null;
    

注意:原始类型比相应的包装类型效率更高。因此,当需要效率时,推荐使用原始类型。