인프런 커뮤니티 질문&답변

JunSuPark님의 프로필 이미지
JunSuPark

작성한 질문수

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)

Object 클래스와 메서드들

섹션 1 - 1 equals 재정의 하면 왜 hashcode도 재정의 해야하는지..

작성

·

157

0

섹션 1 - 1 강의 내용.

왜 equals 재정의 했다면 왜 hascode 도 재정의 해야하는지 이해가 되지 않습니다.

답변 1

1

박은종님의 프로필 이미지
박은종
지식공유자

두 객체가 같다는것의 원래 정의는 같은 인스턴스 입니다. 같은 인스턴스는 곧 메모리 주소가 같은데, 자바에서는 이 메모리 주소를 hashCode 라고 합니다. hashCode()메서드가 재정의 되어 있지 않은 경우 인스턴스의 hashCode() 메서드의 반환값은 인스턴스 주소의 10진수 값이 됩니다.

그런게 두 객체가 같다는 논리적 정의인 equals()를 재정의 한 경우에 가령, 학번이 같다, Integer 객체의 숫자 값이 같다 와 같은 경우 equals()는 같은데, hashCode()가 재정의 되어 있지 않다면 논리적으로 같은객체의 다른 hashCode 값이 반환되는 것입니다. 따라서 Integer와 같은 경우는 해당되는 숫자 값을, 학생의 경우 학번을 반환해주도록 hashCode()메서드를 재정의 해주는 것입니다.

JunSuPark님의 프로필 이미지
JunSuPark

작성한 질문수

질문하기