在 Java 中,包装类是基本数据类型对应的引用数据类型,为基本类型提供了面向对象的操作能力。本文将详细介绍包装类的概念、使用方法及核心特性。
一、包装类的定义与对应关系
包装类的主要作用是将基本数据类型封装为引用类型,使其能够参与面向对象的编程场景(如集合框架)。Java 为每种基本类型都提供了对应的包装类:
| 基本数据类型 | 对应的包装类 |
|---|---|
| byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
二、包装类对象的创建方式
以 Integer 为例,介绍包装类对象的两种主要创建方式:
1. 构造方法创建(JDK5 以前)
通过 new 关键字调用构造方法创建包装类对象,每次调用都会生成新的对象:
// 创建Integer对象
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
2. 静态方法 valueOf 创建(JDK5 以前)
通过包装类的静态方法valueOf()创建对象,具有缓存优化机制:
// 直接传入数值
Integer i3 = Integer.valueOf(123);
// 传入字符串表示的数字
Integer i4 = Integer.valueOf("123");
// 传入指定进制的字符串数字(此处为8进制)
Integer i5 = Integer.valueOf("123", 8); // 结果为83(1×64 + 2×8 + 3 = 83)
缓存机制说明:
- 静态方法
valueOf()会对 **-128 到 127 之间的整数 ** 进行缓存 - 范围内的数值会复用已创建的对象,超出范围则创建新对象
- 设计目的:优化常用数值的内存占用,提高性能
三、自动装箱与自动拆箱(JDK5+)
JDK5 引入的自动装箱 / 拆箱机制,简化了基本类型与包装类之间的转换:
- 自动装箱:基本类型自动转换为对应的包装类
- 自动拆箱:包装类自动转换为对应的基本类型
// 自动装箱:int → Integer(底层调用Integer.valueOf(10)) Integer i6 = 10; // 自动拆箱:Integer → int int i = i6;此机制消除了手动转换的繁琐,使基本类型与包装类可以直接参与运算。
四、Integer 类的常用成员方法
Integer 类提供了丰富的静态方法,用于数据类型转换和进制处理:
-
进制转换方法:
// 转换为二进制字符串 String binary = Integer.toBinaryString(100); // 结果:1100100 // 转换为八进制字符串 String octal = Integer.toOctalString(100); // 结果:144 // 转换为十六进制字符串 String hex = Integer.toHexString(100); // 结果:64 -
字符串转整数:
// 将数字字符串转换为int类型 int num = Integer.parseInt("123"); System.out.println(num + 1); // 输出:124
注意事项:
- 字符串必须仅包含数字字符,否则会抛出
NumberFormatException - 除 Character 外,其他包装类都提供了类似的
parseXXX()方法(如Double.parseDouble())
五、总结
包装类是连接 Java 基本数据类型与引用类型的重要桥梁,其核心特性包括:
- 为基本类型提供面向对象的操作能力
- 静态方法
valueOf()的缓存机制优化了常用数值的内存使用 - 自动装箱 / 拆箱机制简化了类型转换
- 丰富的工具方法支持数据类型转换和进制处理
在实际开发中,尤其是使用集合框架时,包装类是必不可少的。理解并掌握包装类的特性,能帮助我们写出更高效、更优雅的 Java 代码。
Java 包装类:基本与引用类型的桥梁

1044

被折叠的 条评论
为什么被折叠?



