在编程过程中应该有很多时候使用过很多的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方法这篇博文中大概用中文解释了一下。
网友评论