9~1~3つのオブジェクトクラスとequals()
Objectクラス
equals(Object obj)
public boolean equals(Object obj) {
return (this==obj); // 주소 비교.
}
# 예제
class Value {
int value;
Value(int value){
this.value = value;
}
}
class Ex9_1 {
public static void main(String[] args){
Value v1 = new Value(10);
Value v2 = new Value(10);
System.out.println(v1.equals(v2));
}
}
結果:2つの異なるオブジェクトには常に異なるアドレスがあります.ほとんどの場合、equals()メソッドは、非アドレス値(インスタンス変数iv値)を比較するために上書きされる.
# 예제
class Value {
int value;
Value(int value){
this.value = value;
}
// Object의 equals()를 오버라이딩해서 주소가 아닌 value를 비교
public boolean equals(Object obj){
//참조변수의 형변환 전에는 반드시 instanceof로 확인해야 함
if(!(obj instance of Value)) return false;
Value v = (Value)obj; // obj를 value로 형변환(∵Value라는 리모콘에는 value버튼이 있지만, Object에는 없기 때문)
return this.value==v.value;
}
}
Reference
この問題について(9~1~3つのオブジェクトクラスとequals()), 我々は、より多くの情報をここで見つけました https://velog.io/@oyeon/9-13-Object클래스와-equalsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol