equals() 와 hashCode() 라는 메소드

BackEnd_Ash.log·2023년 7월 16일
0

자바스터디

목록 보기
11/19

Java에서 모든 클래스는 기본적으로 Object 클래스를 상속받습니다. 이 클래스에는 여러 유용한 메소드가 포함되어 있으며, 이 중에는 equals() 메소드와 hashCode() 메소드가 있습니다.

equals() 메소드: 두 객체의 동등성(equality)을 확인하는데 사용됩니다. 기본적으로 equals() 메소드는 객체의 물리적 동등성을 확인합니다, 즉 두 객체 참조가 실제로 같은 객체를 가리키는지 확인합니다. 그러나 이 메소드는 오버라이드(재정의)할 수 있으므로, 두 객체의 논리적 동등성을 확인하는 데 사용할 수 있습니다. 예를 들어, 두 개의 서로 다른 String 객체가 동일한 문자열을 갖고 있으면, String 클래스의 equals() 메소드는 이 두 객체를 동등하다고 판단합니다.

hashCode() 메소드: 객체의 해시 코드 값을 반환하는데 사용됩니다. 해시 코드는 객체를 식별하는 데 사용되는 정수값입니다. 기본적으로, hashCode() 메소드는 객체의 메모리 주소를 기반으로 값을 계산하지만, 이 메소드 역시 오버라이드할 수 있습니다.

두 메소드의 가장 중요한 차이점은 equals() 메소드는 두 객체가 동등한지 판단하는 반면, hashCode() 메소드는 객체를 고유하게 식별하는 정수값(해시 코드)을 제공하는 것입니다.

또한, Java에서는 equals() 메소드와 hashCode() 메소드 사이에 특별한 관계가 있습니다. 두 객체가 equals() 메소드에 의해 동등하다고 판정되면, 두 객체의 hashCode() 메소드는 반드시 같은 값을 반환해야 합니다. 이 규칙을 지키지 않으면, Java의 해시 기반 컬렉션(예: HashMap, HashSet)이 올바르게 작동하지 않을 수 있습니다.

profile
꾸준함이란 ... ?

0개의 댓글