js 자바 문자열 구현 hashCode 방법

자바 의 int 형식 은 4 바이트 입 니 다.문자열 의 hashcode 를 계산 할 때 넘 칠 수 있 습 니 다.이런 넘 침 은 정상 적 인 상황 에 속한다.js 에서 모든 숫자 는 64 비트 부동 소수점 형식 으로 저장 된다.그 표현 범 위 는 자바 32 비트 의 int 를 훨씬 초과 해 야 한다.일부 연산 은 정수 만 완성 할 수 있 으 며,이때 js 는 자동 으로 64 비트 부동 소수점 을 32 비트 정수 로 바 꾼 다음 에 연산 을 한다.
무슨 소 용이 있 습 니까?
자바 문자열 을 더욱 깊이 이해 하 는 hashCode 방법수치 계산 을 이해 하 는 넘 침 처리js 와 자바 문자열 을 연결 합 니 다자바 문자열 의 hashCode 방법
public int hashCode() {
        int h = this.hash;
        if (h == 0 && this.value.length > 0) {
            this.hash = h = this.isLatin1() ? StringLatin1.hashCode(this.value) : StringUTF16.hashCode(this.value);
        }

        return h;
    }

js 문자열 구현 hashCode 방법

	
 
	
	
		
String.prototype.hashCode = function(){
	//         ,    
    if(this.hashcode!==undefined){
        return this.hashcode
    }
    let hashcode = 0
    for(let i=0;i<this.length;i++){
    	//             ,      js       。
        hashcode = hashcode*31+this.charCodeAt(i)
        hashcode &= 0xffffffff
    }
    this.hashcode = hashcode
    return hashcode
}
console.info('a'.hashCode())
console.info('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'.hashCode())//-1535507039
console.info('aaaaaa'.hashCode())//-1425372064
console.info('aaaaa'.hashCode())
		
	

좋은 웹페이지 즐겨찾기