Object类中的equals(Object obj) 、String类的equals(Object obj)和 操作符“==”的区别

时间:2020-12-31 16:21:34

1.Object类中的equals(Object obj) 与 操作符“==”是相同的,都表示地址值相等,意思也就是同一个对象


Object equals(Object obj)源码:

 public boolean equals(Object obj) {
       
       return (this == obj); //此处说明与"=="相同

      }



2.String类的equals(Object obj)和 操作符“==”的区别

首页,Object类是Java中所有类的根类,所有类都是Object类的子类,子类将拥有父类的equals方法,而String在继承Object类时,重写了Object类的equals方法

String equals(Object obj)源码

 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;
    }
//可以发现,1,当为同一对象时,直接返回true,2,如果是不同对象,将比较其内容是否相同,相同返回true