包装类
Java使用基本类型的效率高,而对应的包装类包含更多的功能。
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
void | Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的Class对象的引用 |
1.Integer类
- 将原始类型int的值包装在一个对象中。
- 提供处理int时有用的其他常量和方法。
- Hash值为数值本身。
1.1 底层
private final int value;
1.2 方法
static Integer valueOf(int i)
:返回表示指定的int值的Integer实例。static Integer valueOf(String s)
:返回保存指定String值的Integer对象。static int parseInt(String s)
:将String转为int类型。static String toString(int i, int radix)
:以指定基数返回int参数的字符串表示形式。intValue()
:将Integer对象转换为int值,存在其他类型的重载方法。
1.3 内部类
private static class IntegerCache
- 缓存整型字面量的值在 -128 到 127 之间的Integer对象,避免频繁创建对象。
- 超出此范围会创建新对象。
- 缓存大小可通过JVM选项
-XX:AutoBoxCacheMax=<size>
控制。 Byte
、Short
、Long
、Character
也实现了常量池技术。
1.4 示例
Integer i1 = 10;
Integer i2 = Integer.valueOf(10);
int age = Integer.parseInt("18");
2 装箱与拆箱
- 装箱:基本类型转换为包装类。
- 拆箱:包装类转换为基本类型。
- 自动装箱与自动拆箱:装箱、拆箱动作可以自动完成。注意,这可能会降低性能。
2.1示例
Integer i = 4; // 自动装箱。相当于 Integer i = Integer.valueOf(4);
int a = i + 5; // 自动拆箱。相当于 i.intValue() + 5;