13.包装类

1.什么是包装类?

java 提供了两种类型,基础类型和引用类型。使用基础类型在于效率。
然而当要使用针对于对象设计的API 和新特性的时候,例如泛型。那么基础数据类型就需要使用包装类来包装了。


image.png

2,包装类缓存问题

  • Byte Short Integer Long 都是-128到127
  • Character 是0到127
  • 在他们缓存范围内,引用地址是一样的,超出之后,就会在堆里new一个。
  • Double Float 都没有,没有缓存对象,每一个都是新new的
Integer i = 1;
Integer j = 1;
System.out.println(i == j);//true

Integer i = 128;
Integer j = 128;
System.out.println(i == j);//false 
//因为超出Integer的缓存范围,所以在都是在堆里new的,所以引用地址不一致,所以为false

Integer i = new Integer(1);//新new的在堆中
Integer j = 1;//这个用的是缓冲的常量对象,在方法区
System.out.println(i == j);//false

Integer i = new Integer(1);//新new的在堆中
Integer j = new Integer(1);//另一个新new的在堆中
System.out.println(i == j);//false

Integer i = new Integer(1);
int j = 1;
System.out.println(i == j);//true,凡是和基本数据类型比较,都会先拆箱,按照基本数据类型的规则比较

@Test
    public void test3(){
        Double d1 = 1.0;
        Double d2 = 1.0;
        System.out.println(d1==d2);//false 比较地址,没有缓存对象,每一个都是新new的
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容