📜  Java String hashCode() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:16.326000             🧑  作者: Mango

Java String hashCode() 方法及示例

在 Java 中,每个对象都有一个 hashCode() 方法,它返回一个 int 类型的哈希值。哈希值是根据对象的内容生成的,因此它可以用作对象的唯一标识符。

String 类也实现了 hashCode() 方法,它返回的哈希值是根据字符串中每个字符的 Unicode 编码计算得出的。具体来说,它使用以下算法:

public int hashCode() {
    int h = hash;
    if (h == 0 && value.length > 0) {
        char val[] = value;

        for (int i = 0; i < value.length; i++) {
            h = 31 * h + val[i];
        }
        hash = h;
    }
    return h;
}

其中,h 是一个初始值为 0 的 int 类型变量,val 是字符串中的字符数组,31 是一个常数,意义是将上一轮的哈希值左移 5 位再加上当前字符的 Unicode 编码。

该算法返回的哈希值足够均匀分布,因此可以在哈希表等数据结构中使用。

示例代码如下:

public static void main(String[] args) {
    String s1 = "hello";
    String s2 = "world";
    String s3 = "hello";

    System.out.println(s1.hashCode());
    System.out.println(s2.hashCode());
    System.out.println(s3.hashCode());
}

输出:

99162322
113318802
99162322

可以看出,相同的字符串返回相同的哈希值,不同的字符串返回不同的哈希值。这是哈希值的基本特性,也是我们在使用哈希表等数据结构时需要注意的事项。

总之,hashCode() 方法是 Java 中重要的工具方法之一,尤其在程序员使用哈希表等数据结构时具有重要的意义。