Java 中的包装类 – 简明指南
发布: (2026年4月22日 GMT+8 13:01)
3 分钟阅读
原文: Dev.to
Source: Dev.to
什么是包装类?
包装类将基本数据类型转换为对象,将基本值“包装”在对象内部。
| Primitive | Wrapper |
|---|---|
int | Integer |
char | Character |
double | Double |
boolean | Boolean |
为什么需要包装类?
集合只能存放对象
Java 的集合(如 ArrayList)无法存放基本类型。
// 不允许
ArrayList list;
// 允许
ArrayList list;
实用方法
包装类提供了有用的转换方法。
int i = Integer.parseInt("123"); // String → int
Double d = Double.valueOf("10.5"); // String → Double
面向对象的特性
API、框架以及泛型通常要求使用对象而不是基本类型。包装类使你能够在面向对象的范式中工作。
自动装箱与拆箱
Java 会在基本类型和其包装对象之间自动转换:
- 自动装箱(Autoboxing) – 基本类型 → 对象
- 拆箱(Unboxing) – 对象 → 基本类型
这种自动转换让代码更简洁,减少了样板代码。
包装对象存放在哪里?
- 基本值 – 存放在栈上。
- 包装对象 – 存放在堆上。
- 引用变量 – 存放在栈上,指向堆中的对象。
Integer a = 10; // 'a' 引用在栈上;Integer 对象在堆上。
Integer 缓存
Java 会缓存 ‑128 到 127 之间的 Integer 对象。
Integer x = 100;
Integer y = 100;
System.out.println(x == y); // true(同一缓存对象)
超出该范围的值会创建不同的对象:
Integer x = 200;
Integer y = 200;
System.out.println(x == y); // false(不同对象)
最后思考
包装类在 Java 中至关重要。虽然基本类型提供了速度优势,但包装类为集合、API 和基于对象的操作提供了所需的灵活性。掌握包装类、自动装箱以及它们的内存行为,对面试准备尤为关键。