달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2010. 11. 11. 22:11

equals 메소드를 오버라이딩 하기. Study/Java2010. 11. 11. 22:11

그냥 String a = "aaa";
String b="aaa";

a.equals(b) 는 같다고 나오지만

String a = new String("aaa");
String b = new String("aaa");

a.equals(b) 는 false를 반환한다.

이럴 때에는 equals 메소드를 오버라이딩 해준다.

class Quiz {
    private final String answer;
   
    public Quiz(String answer){
     this.answer=answer;
    }
 
    @Override
    public boolean equals(Object obj) {
        if((obj instanceof Quiz)&& obj != null ) {
            return answer ==((Quiz)obj).answer;  
        } else {
            return false;
        }
    }
   
}

public class eqtest {
    public static void main(String[] args)
    {
    
     Quiz q1 = new Quiz("테스트중입니다");
     Quiz q2 = new Quiz("테스트중입니다");

      if(q1==q2){
         System.out.println("같다");
      }else{
         System.out.println("다르다");

      if(q1.equals(q2)){
         System.out.println("같다");
      }else{
         System.out.println("다르다");
      }
   }
}
결과

다르다
같다

이제 Effective JAVA 에 항목 8 'equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자' 참고해서 공부해야겠다.
:
Posted by 유쾌한순례자