1111
1 Integer integer = new Integer(200);
2 Integer integer2 = new Integer(200);
3 System.out.println(integer.equals(integer2)); // true
4 System.out.println(integer == integer2); // false
- 第三行的问题是使用了equals方法,在底层重写了equals的判断方式
- 第四行的问题是直接使用到了 == 而, **==**在比较引用类型的时候直接比较的是两个对象引用的地址, 那么new出来的地址肯定是两个不相同的地址
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
integer 的equals的重写方式的源码如下,上
后序补充吧, 我还是觉得,下面这个代码有点看不明白
return value == ((Integer)obj).intValue();
放在了常量池? 缓存池?
其他的类型应该也是一样的情况,待实验.