基础不牢,难登高峰。
最近连续两次遇到同一问题:两个Integer值使用==判断相等,导致结果错误:
Integer是int的包装类,而等号比较的是对象在堆中的地址,所以从本质上说,使用等号比较Integer对象的大小,是驴唇不对马嘴的。
但是很多情况下,我们可以蒙混过关,因为在Integer的源码中:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)