基本数据类型和包装数据类型

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

image-20220719161652613

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中的大多数的包装类都实现了常量池技术。ByteShortIntegerLong默认创建了[-128,127]范围的相应类型的缓存数据,Character默认创建了[0,127]范围的缓存数据,Boolean直接返回True Or FalseFloatDouble并没有实现常量池技术。

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

posted @ 2022-07-20 10:31  Lyfzzz  阅读(130)  评论(0)    收藏  举报