深入理解 Java 包装类:类型、转换与优势
Java 包装类详解
Java 包装类将基本类型(int、char、float 等)转换为对应的对象表示。八种基本类型各有专属的包装类:
| 基本类型 | 包装类 |
|---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
基本类型转包装对象
使用 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 对象。
Java 还支持 自动装箱,基本类型隐式转为包装对象:
int a = 5;
Integer aObj = a;
double b = 5.6;
Double bObj = b;
详见 自动装箱与拆箱 专题。
注意:Java 9 之前可用构造器(如 new Integer(a)),但已废弃。
包装对象转基本类型
调用对应的 xxxValue() 方法获取基本值:
示例 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
Java 也支持 自动拆箱:
Integer aObj = Integer.valueOf(2);
int a = aObj;
Double bObj = Double.valueOf(5.55);
double b = bObj;
包装类的优势
- 集合框架支持:集合要求存储对象,包装类填补基本类型与对象的鸿沟。
// 报错 ArrayList<int> list = new ArrayList<>(); // 正确 ArrayList<Integer> list = new ArrayList<>(); - 支持 null 值:包装对象可为 null,基本类型不行。
// 报错 int a = null; // 正确 Integer a = null;
注意:基本类型在性能上优于包装类,性能敏感场景优先用基本类型。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除
- 深入理解 Java 包装类:类型、转换与优势