美文网首页
Java“==”和equals()的恩恩怨怨

Java“==”和equals()的恩恩怨怨

作者: HVCKER | 来源:发表于2016-07-09 22:11 被阅读35次

    “==”的概念

    “==”用来比较基本数据类型的值,或引用类型变量的哈希值

    Object 的 equals()方法

    实现就是调用“==”

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

    但有的类会重写该方法,例如String,这是一个对象,它的equals不是用来比较地址,而是用来比较字符串的每一个字符值

     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;
    }
    

    还比如,Integer等

    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer) obj).intValue();
        }
        return false;
    }
    

    结论

    所以“==”和equals()之间的区别就是有没有重写Object的equals规则喽

    相关文章

      网友评论

          本文标题:Java“==”和equals()的恩恩怨怨

          本文链接:https://www.haomeiwen.com/subject/hnfdjttx.html