9-1~3 Object클래스와 equals()

oyeon·2020년 12월 22일
0

Java 개념

목록 보기
9/70

Object 클래스

  • 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다.
  • notify(), wait() 등은 쓰레드와 관련된 메서드이다.

equals(Object obj)

  • 객체 자신(this)과 주어진 객체(obj)를 비교한다. 같으면 true, 다르면 false.
  • Object클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
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));
    }
}

결과 : 서로 다른 두 객체는 항상 주소가 다르다.

  • 대부분의 경우 주소가 아닌 값(인스턴스 변수 iv 값)을 비교하도록 equals() 메서드를 오버라이딩 한다.
# 예제
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;
    }
}
profile
Enjoy to study

0개의 댓글