Java中的包装类用于将基本类型(int
、char
、float
等)转换为相应的对象。
8种基本类型都有其对应的包装类。
基本类型 | 包装类 |
---|---|
byte |
Byte |
boolean |
布尔型 |
char |
字符 |
双精度浮点数 |
Double |
浮点数 |
Float |
int |
整数 |
long |
Long |
short |
Short |
将基本类型转换为包装类对象
我们也可以使用valueOf()
方法将基本类型转换为相应的对象。
示例 1:基本类型转换为包装类对象
class Main {
public static void main(String[] args) {
// create primitive types
int a = 5;
double b = 5.65;
//converts into wrapper objects
Integer aObj = Integer.valueOf(a);
Double bObj = Double.valueOf(b);
if(aObj instanceof Integer) {
System.out.println("An object of Integer is created.");
}
if(bObj instanceof Double) {
System.out.println("An object of Double is created.");
}
}
}
输出
An object of Integer is created. An object of Double is created.
在上面的示例中,我们使用valueOf()
方法将基本类型转换为对象。
在这里,我们使用instanceof
运算符来检查生成的对象是否为Integer
或Double
类型。
但是,Java编译器可以直接将基本类型转换为相应的对象。例如,
int a = 5;
// converts into object
Integer aObj = a;
double b = 5.6;
// converts into object
Double bObj = b;
这个过程称为自动装箱。要了解更多信息,请访问Java 自动装箱和拆箱。
注意:我们也可以使用Wrapper
类的构造函数将基本类型转换为包装类对象。但自Java 9起,构造函数的用法已被弃用。
将包装类对象转换为基本类型
要将对象转换为基本类型,我们可以使用每个包装类中存在的相应值方法(intValue()
、doubleValue()
等)。
示例 2:包装类对象转换为基本类型
class Main {
public static void main(String[] args) {
// creates objects of wrapper class
Integer aObj = Integer.valueOf(23);
Double bObj = Double.valueOf(5.55);
// converts into primitive types
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
和Double
对象转换为相应的基本类型。
但是,Java编译器可以自动将对象转换为相应的基本类型。例如,
Integer aObj = Integer.valueOf(2);
// converts into int type
int a = aObj;
Double bObj = Double.valueOf(5.55);
// converts into double type
double b = bObj;
这个过程称为拆箱。
包装类的优点
- 在Java中,有时我们需要使用对象而不是基本数据类型。例如,在处理集合时。
在这种情况下,包装类帮助我们使用对象形式的基本数据类型。// error ArrayList<int> list = new ArrayList<>(); // runs perfectly ArrayList<Integer> list = new ArrayList<>();
- 我们可以在包装类对象中存储
null
值。例如,// generates an error int a = null; // runs perfectly Integer a = null;
注意:基本类型比相应的对象更有效率。因此,当效率是要求时,始终推荐使用基本类型。