在本教程中,我们将借助示例学习Java 包装类(Wrapper)。
Java中的包装类用于将原始类型(int,char,float等)转换为相应的对象。
8个基本类型中的每一个都有对应的包装器类。
原始类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
我们还可以使用valueOf()方法将原始类型转换为相应的对象。
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()等)。
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;
注意:基本类型比相应的对象更有效。因此,当需要效率时,总是建议使用原始类型。