【问题标题】:Java method overriding of equals methodJava方法覆盖equals方法
【发布时间】:2020-01-30 10:47:51
【问题描述】:

因为,String 类 中的equals() 方法是Object 类的重写方法。并且在覆盖期间,不允许更改签名。

但是String.equals() 比较字符串值,而Object.equals() 比较参考值。那么,两个类的签名不同吗?或者它是如何在内部完成的?

【问题讨论】:

标签: java string object overriding


【解决方案1】:

两个类的签名相同,但实现不同。 对于对象类:

    public boolean equals(Object obj) {
        return (this == obj);
    }

对于 String 类的实现是:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

因此,当您调用 String 对象的 equals 方法时,它会调用该方法的覆盖版本,即在 String 类中实现

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2010-09-16
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多