Java 包装类
在 Java 中的包装类是原始数据类型对应的对象类型。在本教程中,我们将通过示例了解 Java 包装类。
在本教程中,我们将通过示例了解 Java 包装类。
在 Java 中包装类型是原始类型(转换 int
, char
, float
等)对应的对象类型。
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;
注意:原始类型比相应的包装类型效率更高。因此,当需要效率时,推荐使用原始类型。