Java「=」とequalsの恩讐
1134 ワード
「=」の概念
「=」は、基本的なデータタイプの値を比較するために使用され、またはタイプ変数のハッシュ値を参照するために使用されます。
Objectのequals()方法
実現は「=」を呼び出すことです。
だから「=」とequals()の違いはObjectを書き換えるequalsルールがあるかどうかです。
「=」は、基本的なデータタイプの値を比較するために使用され、またはタイプ変数のハッシュ値を参照するために使用されます。
Objectのequals()方法
実現は「=」を呼び出すことです。
public boolean equals(Object obj ) {
return (this == obj);
}
しかし、一部のクラスでは、Steringなどの方法が書き換えられ、これはオブジェクトであり、その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ルールがあるかどうかです。