Java判断两个Integer值相等,应该用equal()而不是==

以下Java代码模拟判断两个Integer值是否相等
Integer a = 3;
People people = new People();
people = DAO.getPeople();
Integer b = people.getB();
System.out.print(a == b);
System.out.print(a.equals(b));
你会看到a==b时,为false,a.equals(b)为true。
这是因为b的值是从数据中拿出的一个对象的值。a和b的id不相同,所以导致了a==b为false。
其中的原因:
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
这是源码中的,也就是说cache中已有-128到127,不在这范围的会新new ,这时可以理解比较是内存地址,
也就是是不是同一对象.
所以说当Integer的值不在-128到127的时候使用==方法判断是否相等就会出错,在这个范围之内的就会没有问题!!!
得出的结论:
如果判断兩个Integer是否相等,最保险的方法是用equals(),而不是用==。
注:但如果是判断两个int值相等,则可以用==;
点击量: 0
免责声明:本文资源均为自媒体平台“芒果XO”用户上传并发布,本平台仅提供信息存储服务,仅作为学习交流,其版权归出版社或原作者所有,本网站不对所涉及的版权问题负责。(如本文资源侵犯了您的权益,请发送邮件到phoenix.lam@mangoxo.com,或按此进行投诉,我们会及时作出处理)如果你下载本网站资源,表示您同意只将此资源用于参考、学习使用而非任何其他用途。收取的费用为整理资源的费用,非资源本身费用,请悉知。
本文链接 https://www.mangoxo.com/blog/Geo2el50 版权所有,转载请保留地址链接,感谢!

☺
加载评论中