Java中的equals()和“==”
equals()方法本质上就是==,比较的是两个变量是否指向同一块内存地址。 由于字符串String比较特殊,既可以是对象null,也可以具体的赋值,我们平时比较两个字符串时,经常比较的是值是否相等,而不太在意内存地址的问题,所以String类就覆盖重写了equals()方法实现比较字符串值相等。 Object.java
public boolean equals(Object obj) {
return (this == obj);
}
String.java
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = length();
if (n == anotherString.length()) {
int i = 0;
while (n-- != 0) {
if (charAt(i) != anotherString.charAt(i))
return false;
i++;
}
return true;
}
}
return false;
}
转载自:https://juejin.cn/post/7124966106334232589