Java“==”和equals()的恩恩怨怨
2016-07-09 本文已影响35人
HVCKER
“==”的概念
“==”用来比较基本数据类型的值,或引用类型变量的哈希值
Object 的 equals()方法
实现就是调用“==”
public boolean equals(Object obj ) {
return (this == obj);
}
但有的类会重写该方法,例如String,这是一个对象,它的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;
}
还比如,Integer等
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer) obj).intValue();
}
return false;
}
结论
所以“==”和equals()之间的区别就是有没有重写Object的equals规则喽