[Java & Spring 면접] equals()와 hashcode() 메소드의 차이점은?

ho's·2022년 6월 6일
0

🎅 Java & Spring 면접

equals() 메소드

  • Object클래스의 equals()는 비교 연산자인 == 과 같은 결과를 리턴한다.

  • equals메소드를 재정의한 대표적인 예가 String class 이다. String Class는 equals()메소드를 재정의 하여 번지비교가 아닌 문자열 '값'을 비교한다.

  • 동일성 비교는 == 비교이다. 객체 인스턴스의 주소 값을 비교한다.

  • primitive data type(boolean, byte, short, int, long, float, double, char)의 경우 ==를 통해 값 비교가 가능하다.

  • 동등성 비교는 equals() 메소드를 사용해서 객체 내부의 값을 비교한다.

hashcode() 메소드

  • 객체 해시코드란 객체를 식별하는 하나의 정수값을 말한다. 위의 API에서 나오는 것 처럼,
    hashCode() 메소드는 객체 메모리 번지를 이용해서 해시코드를 만들어 리턴하기 때문에 객체 마다 다른 값을 가지고 있다.

hashCode()

  • 메소드를 실행해서 리턴된 해시코드 값이 같은지를 본다. 해시 코드값이 다르면 다른 객체로 판단하고, 해시코드 값이 같으면,
    equals()
    메소드로 다시 비교한다. 이 두개가 모두 맞아야 동등 객체로 판단한다. 즉 해시코드의 값이 다른 엔트리끼리는 동치성 비교를 시도조차 하지 않는다.
profile
그래야만 한다

0개의 댓글