본문 바로가기
JAVA BASE/lang & util

01-2. [자바] hashCode() - Object클래스

by staticClass 2020. 12. 23.

hashCode()

이 메서드는 해싱(hashing)기법에 사용되는 '해시함수(hash function)'을 구현한 것이다.
해싱은 다량의 데이터를 저장하고 검색하는 데 유요한 데이터관리기법이고
해시함수는 찾고자 하는 값을 입력하면, 그 값이 저장된 위치를 알려주는 해시코드(hash code)를 반환한다.

public static void main(String[] args) {
    String str1 = new String("abc");
    String str2 = new String("abc");

    System.out.println(str1.equals(str2));
    System.out.println(str1.hashCode());    // String의 hashCode();는 오버라딩 되어 있음 
    System.out.println(str2.hashCode());
    System.out.println(System.identityHashCode(str1));
    System.out.println(System.identityHashCode(str2));
}
/* 결과
true
96354
96354
681842940
1392838282
*/

String클래스는 문자열의 내용이 같으면, 동일한 해시코드를 반환하도록 오버라이딩되어 있기 때문에
str1과 str2이 동일한 해시코드 값을 얻는다.
반면 System.identityHashCode(Object x)는 오버라이딩 되기 전인 Object의 HashCode()와 동일하게
객체의 주소값으로 해시코드를 생성하기 때문에 모든 객체에 대해 항상 다른 해시코드를 반환한다.

댓글