new Integer的两个对象出现了相等的情况

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
  1. 第三行的问题是使用了equals方法,在底层重写了equals的判断方式
  2. 第四行的问题是直接使用到了 == 而, **==**在比较引用类型的时候直接比较的是两个对象引用的地址, 那么new出来的地址肯定是两个不相同的地址
public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

integerequals的重写方式的源码如下,上
源码如图
后序补充吧, 我还是觉得,下面这个代码有点看不明白

return value == ((Integer)obj).intValue();

放在了常量池? 缓存池?
其他的类型应该也是一样的情况,待实验.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章