강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

wnstn96189472 のプロフィール画像
wnstn96189472

投稿した質問数

Java基礎からマスターする with ウンジョン先生 (Do it Javaプログラミング入門) - Part 2(マスター編)

Objectクラスとメソッド

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

作成

·

234

0

섹션 1 - 1 강의 내용.

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

java객체지향알고리즘

回答 1

1

eunjong님의 프로필 이미지
eunjong
インストラクター

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

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

wnstn96189472 のプロフィール画像
wnstn96189472

投稿した質問数

質問する