본문

Hash-Code Method

반응형

# HashCode Method

해시함수는 찾고자하는 값을 입력하면, 그 값이 저장된 위치를 알려주는 해시코드(hashCode)를 반환한다.


Source 01) HashCodeEx01.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package java_lang_package;
 
public class HashCodeEx01 {
 
    public static void main(String[] args) {
        String str1 = new String("abc");
        String str2 = new String("abc");
 
        System.out.println(str1.hashCode());
        System.out.println(str2.hashCode());
 
        System.out.println(System.identityHashCode(str1));
        System.out.println(System.identityHashCode(str2));
    }
}
cs

Result)

1
2
3
4
96354
96354
705927765
366712642
cs

String 클래스문자열의 내용이 같으면, 동일한 해시코드를 반환하도록 hashCode메서드를 오버라이딩하였기 때문에, 

문자열의 내용이 같은 str1과 str2에 대해 hashCode()를 호출하면 항상 동일한 해시코드값을 얻는다

반면에 System.identityHashCode(Object x)는 Object클래스의 hashCode 메서드처럼 객체의 주소값으로 해시코드를 생성하기 때문에 

모든 객체에 대해 항상 다른 해시코드값을 반환할 것을 보장한다. 

그래서 str1과 str2가 해시코드는 같지만 서로 다른 객체라는 것을 알 수 있다.





출처 및 참고자료 : JAVA의정석(남궁성 저)


반응형

공유

댓글