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;
        }
---------------------
作者:赤火鹿
来源:CSDN
原文:https://blog.csdn.net/qq_32367263/article/details/81392082
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-20 22:02  天涯海角路  阅读(637)  评论(0)    收藏  举报