自动拆装箱
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
自动装箱:把基本类型自动转换成包装类型的过程
自动拆箱:把包装类型自动转换成基本类型的过程
Integer i = 1;//自动装箱
int b = i;//自动拆箱
int 的自动装箱是通过Integer.valueOf()实现的。
Integer i = Integer.ValueOf(1);
Integer的自动拆箱是通过i.intValue()实现的
int b=i.intValue();
注:
Java中 “==” 比较的是对象,equals比较的是值。
自动拆装箱与缓存机制(仅在自动拆装箱时可用),
例如:当Integer类型的对象数值在-128到+127之间时进行装箱,整形对象在内部实现相同对象的引用实现缓存和重用。
public class Main {
public static void main(String[] arges) {
Integer integer1 = 3;
Integer integer2 = 3;
if (integer1 == integer2)
System.out.println("integer1 == integer2");
else
System.out.println("integer1 != integer2");
Integer integer3 = 300;
Integer integer4 = 300;
if (integer3 == integer4)
System.out.println("integer3 == integer4");
else
System.out.println("integer3 != integer4");
}
}
输出:
弊端:
由于自动拆箱,如果包装类对象为null,那么自动拆箱时就有可能抛出NPE。