Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 包装类(Wrapper)

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

Java中的包装类用于将原始类型(int,char,float等)转换为相应的对象。

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

原始类型包装类
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

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

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

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

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("创建一个Integer对象。");
    }

    if(bObj instanceof Double) {
      System.out.println("创建一个Double对象。");
    }
  }
}

输出结果

创建一个Integer对象。
创建一个Double对象。

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

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

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

int a = 5;
//转换为对象
Integer aObj = a;

double b = 5.6;
//转换为对象
Double bObj = b;

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

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

包装对象成原始类型

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

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

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("a的值: " + a);
    System.out.println("b的值: " + b);
  }
}

输出结果

a的值: 23
b的值: 5.55

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

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

Integer aObj = Integer.valueOf(2);
//转换为int类型
int a = aObj;

Double bObj = Double.valueOf(5.55);
//转换为double类型
double b = bObj;

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

包装类的优点

  • 在Java中,有时我们可能需要使用对象而不是原始数据类型。例如,在使用集合时。

    // 错误
    ArrayList<int> list = new ArrayList<>();
    
    //正常运行
    ArrayList<Integer> list = new ArrayList<>();

    在这种情况下,包装器类可以帮助我们将原始数据类型用作对象。

  • 我们可以将空值存储在包装对象中。例如,

    //将生成一个错误
    int a = null;
    
    // 正常运行
    Integer a = null;

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