码迷,mamicode.com
首页 > 其他好文 > 详细

关于Integer的==小发现(非常好玩和易错)

时间:2019-07-25 13:28:14      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:lse   -128   code   als   关于   没有   需要   赋值   class   

Integer n=new Integer(222);
Integer p=new Integer(222);
 System.out.println(n==222);

输出:true

这段代码没有疑问,因为发生了转型,n转为了int。

Integer n=new Integer(222);
Integer p=new Integer(222);
 System.out.println(n==p);

输出:false

这里需要需要注意了,n和p是不同对象,=比较的是内存地址所以输出false。

Integer n=new Integer(122);
Integer p=new Integer(122);
 System.out.println(n==p);

输出:false

这里为什么输出false,话说不是-128到127都用的缓存吗,对一半,另一半是new的时候不用缓存,只有在字面量赋值的时候才用缓存,和String有点像不是吗?看下面用字面量赋值:

Integer n=122;
Integer p=122;
 System.out.println(n==p);

输出:true

是不是很好玩啊~~~~

关于Integer的==小发现(非常好玩和易错)

标签:lse   -128   code   als   关于   没有   需要   赋值   class   

原文地址:https://www.cnblogs.com/pc-m/p/11243618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!