equals方法

首先我们知道Java中Object类是所有类的父类,它里面定义了equals()方法:

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

可以看到是使用= =来进行比较的,

是判断两个对象引用指向的是同一个对象,即比较2 个对象的内存地址是否相等。

注意:如果子类重写了equals() 方法,就需要重写hashCode() 方法,比如String 类就重写了equals() 方法,同时也重写了hashCode() 方法。

Java中重写的equals()
这里我们看一下java的一些自带的包装类怎么重写equals()的:

String.java
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()方法是进行内容比较,而不是单纯的引用比较。

posted on 2022-09-03 14:56  湖汉三  阅读(92)  评论(0)    收藏  举报

导航