0

機能を見ていましたString.hashcode()。次のように定義されています。

このメソッドは、この文字列のハッシュ コードを返します。String オブジェクトのハッシュ コードは次のように計算されます。

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

int 演算を使用するs[i]と、 は文字列の i 番目の文字、n は文字列の長さ、^ は累乗を示します。(空の文字列のハッシュ値はゼロです。)

ここでの質問はs[0]、文字列の 0 番目の文字またはむしろ n 番目の文字を指します。しかし、ハッシュコードの計算に使用されるのはその文字の int 値ですか?

4

2 に答える 2

2

すべての文字には数値があります (ASCII/UTF-16/ など...)。それはこの計算で使用されています。

char x = 'A';
System.out.println(x * 2); // output is 130

これは、'A' の数値が 65 であるためです。

于 2013-10-11T03:45:32.480 に答える
1

Java が算術演算を実行する最小の型は int です。だからs[0]*31^(n-1)に変換されます((int)s[0])*31^(n-1)

于 2013-10-11T04:21:26.193 に答える