关于equals

作者: JUNE言JUNE语 | 来源:发表于2016-11-11 00:13 被阅读27次

关于JAVA的面试,底层实现这部分是一个巨大的坑。

一个小问题

最后两个输出分别是什么

Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1 == o2);
System.out.println(o1.equals(o2));

答案是 false,false
第一个是false肯定没什么疑问,因为两个引用o1,o2分别指向两个不同的对象,这两个对象的地址肯定是不同的,而 "==" 就是比较两个对象的地址是否相同。
第二个false就需要查看Object的equals方法的源码了

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

从源码可以很明显看出,Object的equals方法跟 "==" 是没有任何区别的。

那么对于比较常用的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;
}

非常明显,String的equals从两方面来判断两个String对象是否相等
1.引用地址是否相同
2.若引用地址不同,那么判断字符串长度,长度相同再判断字符串中每一个字符是否都相同(通俗一点说就是对应字符串的内容是否一样)。

相关文章

  • 再论:关于 equals 和 hashCode

    上篇 关于 equals 和 hashCode 关于 equals 和 hashCode 的基本性质已经论述过了。...

  • 关于equals

    关于JAVA的面试,底层实现这部分是一个巨大的坑。 一个小问题 最后两个输出分别是什么 答案是 false,fal...

  • Java中的Object类-hashcode()和equals(

    关于equals()方法: Object类中对equals()方法的默认的实现方式是 : return this ...

  • 阿里Java编程规约【五】 集合处理

    【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals ,就必须重写...

  • 阿里规约集合处理

    【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals,就必须重写 ...

  • 第五章

    #1 【强制】关于hashCode和equals的处理,遵循如下规则# 1.重写equals,即必须重写hashCode

  • 集合处理规约

    【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要覆写 equals,就必须覆写 ...

  • Java基础之equals方法

    1、关于equals方法 equals方法是基类Object中的方法,因此对于所有的继承于Object的类都会有该...

  • JavaSE基础面试题

    1. 下列关于equals()方法和==运算符的说法,不正确的是)(C) A.equals()方法可以用来比较复合...

  • 2019-05-15 详解重写equals()方法就必须重写h

    先来看Object关于hashCode()和equals()的源码: /*** Returns a hash co...

网友评论

    本文标题:关于equals

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