基本数据类型和包装数据类型
1.基本数据类型与包装数据类型

2.自动装箱和自动拆箱
装箱:将基本类型包装为对应的包装类型。
拆箱:将包装类型转化为对应的基本类型。
public class IntegerTest {
public static void main(String[] args) {
Integer i = 10; // 装箱
int j = i; // 拆箱
}
}
main方法对应的字节码:
0 bipush 10
2 invokestatic #2 <java/lang/Integer.valueOf>
5 astore_1
6 aload_1
7 invokevirtual #3 <java/lang/Integer.intValue>
10 istore_2
11 return
从上面可以看出,装箱实际上调用了valueOf()方法,拆箱实际上是调用了xxxValue()方法。
3.常量池技术
Java中的大多数的包装类都实现了常量池技术。Byte、Short、Integer、Long默认创建了[-128,127]范围的相应类型的缓存数据,Character默认创建了[0,127]范围的缓存数据,Boolean直接返回True Or False。Float、Double并没有实现常量池技术。
public class IntegerTest {
public static void main(String[] args) {
Integer i = 10;
Integer j = 10;
System.out.println(i == j);
}
}
控制台的输出为:true
public class IntegerTest {
public static void main(String[] args) {
Integer i = 1000;
Integer j = 1000;
System.out.println(i == j);
}
}
控制台的输出:false

浙公网安备 33010602011771号