String Hashcode 值是如何计算的?
String hashCode()方法以 Integer 形式返回此 String 的 hashcode 值。
句法:
公共 int hashCode()
例如:
import java.io.*;
class GFG {
public static void main(String[] args)
{
String str = "GFG";
System.out.println(str);
int hashCode = str.hashCode();
System.out.println(hashCode);
}
}
输出:
GFG
70472
但这里的问题是,这个整数值 70472 是如何打印出来的。如果您再次尝试查找该字符串的哈希码值,结果将是相同的。那么这个String hashcode是怎么计算出来的呢?
字符串哈希码是如何计算的?
字符串的哈希码值是在公式的帮助下计算的:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
在哪里:
- s[i]表示字符串的第 i 个字符
- ^指指数操作数
- n表示字符串的长度
例子:
在上述情况下,字符串是“GFG”。因此:
s[] = {'G', 'F', 'G'}
n = 3
因此哈希码值将计算为:
s[0]*31^(2) + s[1]*31^1 + s[2]
= G*31^2 + F*31 + G
= (as ASCII value of G = 71 and F = 70)
71*312 + 70*31 + 71
= 68231 + 2170 + 71
= 70472
这是作为输出接收的值。
因此,这就是 String hashcode 值的计算方式。
空字符串的HashCode值?
在这种情况下,字符串是“”。因此:
s[] = {}
n = 0
因此哈希码值将计算为:
s[0]*31^(0)
= 0
因此,空字符串的哈希码值始终为 0。