Skip to content

包装类

4.6.1 基本信息

对于每种基本数据类型, Java 都提供了与其对应的类。这些类称为包装类。

基本数据类型byteshortintlongfloatdoublecharboolean
包装类ByteShortIntegerLongFloatDoubleCharacterBoolean

intchar所对应的包装类为单词的全拼。

4.6.2 装箱

基本数据类型转换为对应的引用数据类型对象的操作。

4.6.3 自动装箱 Java SE 5.0+

将一个基本数据类型变量直接赋值给对应的引用数据类型对象。本质上调用了对应的valueOf()

例如:

java
Integer integer = 3;

相当于:

java
Integer integer = Integer.valueOf(3);

注意

所有相同类型地包装类对象之间值的比较,应当全部使用equals()。

在值范围在 -128 到 127内的赋值,Integer对象会在IntegerCache.cache中产生,会服用已有对象。此时使用==比较是安全的。 但在范围之外的所有数据会在堆中产生,不会复用已有对象。 故推荐全部使用equals()来规避风险。

4.6.4 自动拆箱 Java SE 5.0+

将一个引用数据类型对象直接赋值给对应基本数据类型变量。本质上调用了对象的xxxValue()

例如:

java
int i = integer;

相当于:

java
int i = integer.intValue();

当发生基本数据类型和包装类运算时,会发生自动拆箱。

关于哈希码

  • 整数的哈希码是其本身,但小数的哈希码需要经过计算才能得到。

  • 字符的哈希码是其对应的编码。

  • 布尔类型的哈希码为特殊值,如true的哈希码为1231false1237

  • 八种基本数据类型的哈希码都为固定值。