JAVA技术分享

关于hashCode方法

2016-11-14  本文已影响8人  JUNE言JUNE语

在编程过程中应该有很多时候使用过很多的hashCode函数,今天就来尝试深究一下。

1.Object

public native int hashCode();

Object的hashCode是一个native方法
返回的是该对象的<b>地址值</b>。
一般情况下,为了更好的使用hashCode这个方法,很多类都会重写这个方法。

2.String

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;
}

一个简单的说明:String中有一个私有属性hash用于存储该对象的hash值,初次调用时初始化,之后调用则直接返回hash

关于为什么取31为权,可以参考StackOverflow上的这个问题
//感觉程序员英语差真心活不下去,还是要好好恶补英语。
关于Java中String类的hashCode方法这篇博文中大概用中文解释了一下。

上一篇 下一篇

猜你喜欢

热点阅读