자바에서 동등비교연산자 (==)와 equals() 메소드간의 차이가 무엇인가요?

조회수 2461회

제가 다음 사항들에 대해서 정확히 이해하고 있는지를 확인받고 싶습니다.

  • ==: 참조값을 비교. 즉 두 객체가 동일한 메모리 주소를 참조하는지를 비교
  • .euqls(): 객체의 데이터를 비교한 결과를 평가

제가 이해한 것이 맞나요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    일반적으로 위 질문에 대한 답은 "맞습니다". 그러나...

    • equals() 메소드는 비교하기 위해 쓰여진 것만 비교합니다. 그 이상도 그 이하도 아니고요.

    • 만약 클래스에서 equals() 메소드를 오버라이드 하지 않는다면, 이 베소드를 오버라이드한 가장 가까운 슈퍼 클래스의 equals(Object o) 메소드가 기본입니다.

    • equals() 메소드를 오버라이드한 슈퍼 플래스가 없다면, 최상위 슈퍼클래스인 Object 클래스가 정의한 메소드 Object#equals(Object o)가 기본이 됩니다. 이것은 == 연산자와 동일한 결과를 보여줍니다. 즉, 동일한 객체를 참조하는 두 변수들에 대해서만 참을 반환합니다. 그래서 객체의 동일함과 비기능적 동일함을 테스트 하고자 하실 것입니다.

    • equals() 메소드를 오버라이드하려면 hashCode()도 오버라이드 해야 한다는 것을 항상 기억하세요. equals() 메소드가 두 객체의 값이 같다고 한다면, 두 객체에 대한 hashCode()로 부터 반환된 결과는 무조건 같아야 합니다. 그 반대 경우는 반드시 참은 아니지요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)