equals와 hashCode

2023. 11. 6. 00:19·Java

equals()

 

- 동일성

equals는 객체 주소값을 비교한다. 이것을 동일성이라고 한다. 

 

 

재정의 되지않은 상태에서는 주소값으로 비교하게 된다. 결과는 false 

 

 

- 동등성

메모리 주소는 다르지만 값이 같은 경우 동등성이라고 한다. 이것을 비교하기 위해 재정의 한다. 

 

 

두 객체를 생성하고 동일한 값을 넣어준다면 둘은 각각 다른 객체이지만 동일한 값을 가지고 있다. 즉, 동등하다.

 

 

 


hashCode()

객체의 해시 코드를 반환한다. 객체를 식별하는 하나의 정수값이라고도 한다.

객체의 필드들을 조합하여 해시 코드 생성하게 되는데 31이 홀수이자 소수여서 곱하여 만든다.

 

 

hashCode 같은경우 객체의 해시 코드를 반환하는데 

equals만 재정의 할 경우 hash값을 사용하는 hashset,map등에서 동등성이 적용되지 않아 두개의 값이 들어간다. 그래서 대부분 같이 재정의 해주는 것이 좋다. 

 

equals 결과가 true이면 두객체 해시코드는 반드시 같아야 하지만 두객체의 해시코드가 같다고 해서 equals 메서드의 결과가 반드시

true일 필요는 없지만 왠만하면 두 값다 맞춰주자

 

 

'Java' 카테고리의 다른 글

System.out.println 메소드는 현업에서 절대 쓰지 말아야 하는 이유  (2) 2023.11.28
String Builder 와 String Buffer  (0) 2023.10.31
HashSet 내부 구현  (4) 2023.10.26
'Java' 카테고리의 다른 글
  • System.out.println 메소드는 현업에서 절대 쓰지 말아야 하는 이유
  • String Builder 와 String Buffer
  • HashSet 내부 구현
유당불내증이 있는 개발자
유당불내증이 있는 개발자
  • 유당불내증이 있는 개발자
    보초개발
    유당불내증이 있는 개발자
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
      • Java
      • 이슈
      • 책
        • 객체지향의 사실과 오해
        • 자바의 신
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해
        • 토비의 스프링
        • 모던 자바 인 액션
        • 이펙티브 자바
        • Real MySQL 8.0
        • 자바 성능 튜닝이야기
        • 만들면서 배우는 클린 아키텍처
      • 인프런 강의
        • Practical Testing: 실용적인 테스트..
        • Jenkins를 이용한 CICD Pipeline ..
        • 비전공자도 이해할 수 있는 쿠버네티스 입문,실전
        • 대기업 근무하며 경험한 Redis를 야무지게 사용..
      • TIL
  • 인기 글

  • 태그

    explain
    db
    EC2
    redis
    MySQL
    AWS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
유당불내증이 있는 개발자
equals와 hashCode
상단으로

티스토리툴바