hashCode 에 대해 오늘 좀 공부를 했는데요

hashCode 에 적용되는 규칙은 딱 1가지라고 하더라고요

"equals가 true 라면 hashCode 값도 같아야한다"


그 외에 필요에 의해 아래에 것들이 정해졌다고 해요

- equals 가 false 면 같이도 되지만 달라도 된다.(근데 자바 13 부터 실용적인 이유로 다르도록 정의가 됐다네요)

- 클래스의 hashCode 는 일반적으로 주소값을 Integer 로 바꾼것으로 정의되지만 필수로 이렇게 구현해야하는건 아니라네요.

- 이상적인 hashCode 를 만들기 위해서 value가 기본타입이라면 참조타입으로 바꿔서 hashcode(value)를, 참조 타입이라면... 배열이라면... 을 구한 후 기존의 31을 곱한 값과 더해라



근데 이러면 아래의 블로그 글 설명은 틀린거죠?


"""
상속받은 hashCode() 기본 동작 역시 객체의 주소 값을 가지고 Int 값을 생성한다. 모든 속성이 같은 객체라고 하더라도 기본 hashCode의 리턴 값은 다르다.
"""

자바의 == 비교는 주소값을 비교한다고 해요. 그래서 모든 속성값이 같아도 == 는 다를 수 있대요.

근데 이건 ==를 hashCode 비교랑 헷갈린거겠죠?