1. equals()와 hashCode()란?
(1) Object 클래스와 상속
- Object는 자바에서 모든 클래스가 직접 혹은 간접적으로 상속받는 최상위 클래스이다.
- 따라서 **
equals()**와 hashCode() 메서드는 Object 클래스에 정의되어 있기 때문에, 모든 자바 객체는 이 둘을 기본적으로 상속받아 사용할 수 있다.
(2) 기본 동작
- equals()
- 기본적으로 객체의 동일성(Identity)을 확인하기 위해 this == obj 비교를 수행한다.
- 즉, 같은 메모리 주소(동일한 객체)를 가르키는지 확인한다.
- 예:

- String, Wrapper 클래스 등은 equals()가 값(내용) 비교로 오버라이딩되어 있으므로, s1.equals(s2) 시에 문자열 등 내부 값을 비교한다.
- hashCode()
- 객체의 고유한 정수값(해시코드)을 반환하는 메서드이다.
- Object의 기본 구현은 대체로 메모리 주소를 기반으로 해싱한 값을 반환하지만, JVM이나 OS 환경 등에 따라 실제 내부 구현은 달라질 수 있다.
- 해시 기반 컬렉션(예:
HashSet, HashMap)에서는 이 값을 이용해 객체가 저장될 위치를 결정한다.
- 예: