等于对象中的方法

Sun*_*ise -1 java equals object

这是我的代码:

Object a = "1234";
Object b = new Integer("1234");
Run Code Online (Sandbox Code Playgroud)

我知道这==意味着参考和equals()手段包含.

现在为什么a.equals(b)是假的?

它们中的每一个都具有相同的值.

Abi*_*san 7

因为两者都来自不同的班级.a来自String班级,b来自Integer班级.因此,它将返回false而不进一步检查实例的内容.

尽管如此,您已经使用Object引用声明了这两个实例,但是,在运行时,当您调用.equals()方法时,它们将委派给它们实际的实例类.

例如,如果你采用Stringequals()方法,它就像

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
           char v1[] = value;
           char v2[] = anotherString.value;
           int i = offset;
           int j = anotherString.offset;
           while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
           }
        return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您传递了另一个类的实例,它将返回false.


SQB*_*SQB 5

a是一个Object容器,包含一个String对象,而您b是一个Object容器,包含一个Integer对象.

当你打电话equals()a,它确实String.equals()发现你的String刚好不等于一个Integer而且没有任何数量的自动装箱和开箱即可.