Java判断两个Integer值相等,应该用equal()而不是==
Phoenix 2017.10.26 00:00 浏览(以下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值相等,则可以用==;
本文链接 https://www.mangoxo.com/blog/Geo2el50 版权所有,转载请保留地址链接,感谢!
☺
加载评论中