原文: https://www.programiz.com/java-programming/wrapper

在本教程中,我们将借助示例学习 Java 包装器类。

Java 中的包装器类用于将原始类型(intcharfloat等)转换为相应的对象。

8 个基本类型中的每一个都有对应的包装器类。

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

将基本类型转换为包装对象

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

示例 1:原始类型到包装对象

  1. class Main {
  2. public static void main(String[] args) {
  3. // create primitive types
  4. int a = 5;
  5. double b = 5.65;
  6. //converts into wrapper objects
  7. Integer aObj = Integer.valueOf(a);
  8. Double bObj = Double.valueOf(b);
  9. if(aObj instanceof Integer) {
  10. System.out.println("An object of Integer is created.");
  11. }
  12. if(bObj instanceof Double) {
  13. System.out.println("An object of Double is created.");
  14. }
  15. }
  16. }

输出

  1. An object of Integer is created.
  2. An object of Double is created.

在上面的示例中,我们使用valueOf()方法将原始类型转换为对象。

在这里,我们使用instanceof运算符检查生成的对象是Integer还是Double类型。

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

  1. int a = 5;
  2. // converts into object
  3. Integer aObj = a;
  4. double b = 5.6;
  5. // converts into object
  6. Double bObj = b;

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

注意:我们也可以使用Wrapper类构造器将原始类型转换为包装对象。 但是在 Java 9 之后,不再使用构造器。


包装对象到原始类型

要将对象转换为基本类型,我们可以使用每个包装器类中存在的对应值方法(intValue()doubleValue()等)。

示例 2:将包装对象转换为原始类型

  1. class Main {
  2. public static void main(String[] args) {
  3. // creates objects of wrapper class
  4. Integer aObj = Integer.valueOf(23);
  5. Double bObj = Double.valueOf(5.55);
  6. // converts into primitive types
  7. int a = aObj.intValue();
  8. double b = bObj.doubleValue();
  9. System.out.println("The value of a: " + a);
  10. System.out.println("The value of b: " + b);
  11. }
  12. }

输出

  1. The value of a: 23
  2. The value of b: 5.55

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

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

  1. Integer aObj = Integer.valueOf(2);
  2. // converts into int type
  3. int a = aObj;
  4. Double bObj = Double.valueOf(5.55);
  5. // converts into double type
  6. double b = bObj;

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


包装类的优点

  • 在 Java 中,有时我们可能需要使用对象而不是原始数据类型。 例如,在使用集合时。 ```java // error ArrayList list = new ArrayList<>();

// runs perfectly ArrayList list = new ArrayList<>();

  1. <br />在这种情况下,包装器类可帮助我们将原始数据类型用作对象。
  2. -
  3. 我们可以将空值存储在包装对象中。 例如
  4. ```java
  5. // generates an error
  6. int a = null;
  7. // runs perfectly
  8. Integer a = null;

注意:原始类型比相应的对象更有效。 因此,当需要效率时,始终建议使用原始类型。