首页 > 解决方案 > 覆盖等于和等于之间有什么区别?

问题描述

我是 Java 和 StackOverflow 的新手,但我已经阅读了一些关于 equals 的答案,他们说:

Equals 方法比较两个对象的身份,如果它们是

相同,它返回 TRUE 。而如果你不覆盖方法 Equals

它的作用类似于 ==(如果 2 个变量引用同一个对象,则返回 true)。

Integer x = new Integer(4);  

Integer y = new Integer(4); 

System.out.println(x.equals(y));  

System.out.println(x == y);

如果上面的查询是正确的,为什么这段代码会打印 TRUE 和 FALSE,因为我们没有覆盖方法 equals?

标签: java

解决方案


因为类Integer确实覆盖了equals方法,它的实现如下:

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
}

推荐阅读