Integer使用==做判断遇到的问题

2020-01-09 16:04:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Integer使用==做判断遇到的问题

问题:

最近使用Integer类型的数据做判断时,遇到了一个神奇的问题。

如:

Integer a=223;

Integer b=223;

这样使用==做判断,得到的结果是 false

原因:

后来查找了一下,发现Integer类型的数据,范围在-128-127时是放在常量池的,意思也就是如果在范围内,会直接从常量池中取值,这时使用==判断是没问题的,但是如果不在常量池范围内使用Integer是就会重新new Integer(),所以这个时候使用==得到的结果就是false了。

 

 debug看一下各个变量的内存地址:

 

 控制台输出结果:

 

 

这里顺便说一下==和equals的区别

说简单点就是: ==比较的是内存地址,而equals比较的是值是否相等。

上面的测试案例把==换成equals:

 

 控制台输出:


原文链接:https://www.cnblogs.com/wlv1314/p/12172316.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:利用接口及抽象类设计实现

下一篇:设计一个限制子类的访问的抽象类实例,要求在控制台输出如下结果