String中equals方法之 字符串与字符数组的比较

 遇到的一个问题:

运行结果:false

public static void main(String[] args) {
        String s = "Hello";
        char[] ch = {'H','e','l','l','o'};
        System.out.println(s.equals(ch));
    }

为什么呢?原来是查看完api之后发现String类里面重写的equals()方法,主要比较的是两个字符串的内容,除此之外才比较其他传进来的Object对象引用的内存地址值。

查看的String类重写的equals()方法:

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }

猜你喜欢

转载自blog.csdn.net/qq_32367263/article/details/81392082