모든 객체의 공통 메서드.

모든 객체의 공통 메서드에서는 Object의 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)의 재정의(overriding)시 지켜야 하는 규약을 설명합니다.

아이템 10. equals는 일반 규약을 지켜 재정의하라

재정의 하지 않는것이 최선인 상황

재정의 해야할 상황

equals메서드의 동치관계는 다음을 만족함

아이템 11. equals를 재정의하려거든 hashCode도 재정의하라

좋은 hashCode 작성 요령

  1. int로 result를 선언한후 객체의 첫 번째 핵심 필드인 c로 초기화
  2. 나머지 핵심 필드 f에 대해 다음과정 수행
    1. 해당 필드의 해시코드 c를 계산
      • 기본 타입이라면 Type.hashCode(f)
      • 참조 타입이라면 hashCode를 재귀적으로 호출, 계산이 복잡해 질것 같으면 표준형(canonical representation)을 만들어 hashCode를 호출
      • 배열이라면 핵심 원소 각각을 별도의 필드 처럼 처리
    2. 계산된 c로 result를 갱신 (result = 31 * result + c)

아이템 12. toString을 항상 재정의하라

아이템 13. clone 재정의는 주의해서 진행하라

아이템 14. Comparable을 구현할지 고려하라

equals와의 차이점

Arrays.sort(a);