首先我们知道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()方法是进行内容比较,而不是单纯的引用比较。
标签:return,String,方法,equals,value,anObject,重写 From: https://www.cnblogs.com/huhansan12138/p/16650098.html