int和Integer的比较

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

猜你喜欢

转载自hengdu.iteye.com/blog/2404815