Java方法重载equals方法

问题描述 投票:0回答:1
String类中的

equals()方法是Object类中的重写方法。并且在覆盖中,不允许更改签名。但是String.equals()比较字符串值,而Object.equals()比较参考值。那么两个类的签名是否不同?还是内部如何完成?

java string object overriding
1个回答
0
投票

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

    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类内部实现

© www.soinside.com 2019 - 2024. All rights reserved.