java基础:Object的equals方法

来源:互联网 发布:会员积分软件下载 编辑:程序博客网 时间:2024/06/03 16:51

一:看第一个例子


输出结果:

false
false

cat1 == cat2 很简单,他们不是同一对象,有不通的存储地址。

但是cat1.equals(cat2)为什么是false呢。因为cat是对象,这里用的是父类的equals方法

而Object类equals方法的实现为:

<strong><span style="font-size:18px;"> public boolean equals(Object obj) {        return (this == obj);    }</span></strong>

所以,Obejct的equals方法本质上还是用==比较的。


二:尝试重写Obejct的equals方法



输出结果:

true

三:String的equals方法

String s1 = "abc";String s2 = "abc";System.out.println(s1.equals(s2));

返回true,因为String就重写了Object的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;    }



0 0
原创粉丝点击