int a=120;
Integer b1=120;
Integer b2=120;
Integer c1=new Integer(120);
Integer c2=new Integer(120);
Integer d1=200;
Integer d2=200;
//参考结论1
System.out.println(a==b1);//true
System.out.println(a==b1);//true
扫描二维码关注公众号,回复:
257387 查看本文章
//参考结论2和3
System.out.println(b1==b2);//true
//参考结论2和4
System.out.println(b1==c1);//false
System.out.println(c1==c2);//false
//参考结论2和3
System.out.println(d1==d2);//false
结论:
1、基本类型和包装类型比较会自动拆箱(值比较),所以结果始终为true
2、包装类型之间的比较各自的内存地址是否一致(引用比较)
3、Integer b1=120等同于Integer b1=Integer.valueOf(120),两种创建方式一致,会优先从缓存中获取引用。缓存范围:-128~127,所以通过这两种创建的包装类型,在缓存范围内比较结果为true,因为缓存地址相同。
4、new Integer()会开辟新的内存地址,所以与其他形式的包装类比较结果为false