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

Phoenix Phoenix 2017.10.26 00:00 浏览(449) 评论 (0)

以下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 版权所有,转载请保留地址链接,感谢!

Phoenix 关注
來一遭,做一事。 等一人,愛一次。
  • 939 动态
  • 1,975 相册
  • 22 粉丝
  • 1,611 获赞