> Java > java지도 시간 > Java에서 객체의 해시 코드는 어떻게 생성됩니까?

Java에서 객체의 해시 코드는 어떻게 생성됩니까?

PHPz
풀어 주다: 2024-04-11 18:45:01
원래의
1004명이 탐색했습니다.

Java 개체의 해시 코드는 다음 공식으로 생성됩니다. h = (h

Java에서 객체의 해시 코드는 어떻게 생성됩니까?

Java에서 생성된 객체의 해시 코드는 어떻게 되나요?

해시 코드는 Java 객체 내부에 저장된 int 값으로 객체를 빠르게 식별하고 찾는 데 사용됩니다. 이는 다음 공식에 의해 생성됩니다:

hashCode = (h << 5) - h + x
로그인 후 복사

여기서:

  • h는 이전 해시 코드를 5비트 왼쪽으로 이동하고 원래 해시 코드와 합한 결과입니다(초기 값은 0)
  • x 는 객체입니다. 속성 값 또는 포인터의 해시 코드입니다.

기본 유형의 경우 해시 코드는 다음과 같이 객체에 직접 저장됩니다.

int i = 10;
System.out.println(i.hashCode()); // 输出:10
로그인 후 복사

참조 유형의 경우 해시 코드는 해시 코드를 기반으로 생성됩니다.

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
로그인 후 복사

31은 해시 충돌을 줄이는 데 도움이 되는 "매직 넘버"라고 불리는 소수입니다.

실용 사례

다음 Person 클래스를 고려하세요. Person 类:

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        if (name != null) {
            hash += name.hashCode() * 31;
        }
        hash += age * 31;
        return hash;
    }
}
로그인 후 복사

此类覆盖了 hashCode() 方法以生成定制的哈希码,根据 nameage 属性哈希码计算。

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
로그인 후 복사

在上面的案例中,尽管 p1p2rrreee

이 클래스는 hashCode() 메서드를 재정의하여 에 따라 사용자 정의 해시 코드를 생성합니다. > 이름age 속성 해시 코드 계산. 🎜rrreee🎜위의 경우 p1p2는 서로 다른 객체이지만 동일한 속성을 가지고 있기 때문에 해시 코드는 동일합니다. 🎜

위 내용은 Java에서 객체의 해시 코드는 어떻게 생성됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿