hashCode()java中方法返回什么值?我读到它是一个对象的内存引用new Integer(1)。为String("a")97。我很困惑:是ASCII还是什么类型的值?
3 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
哈希码是一个整数值,表示被调用的对象的状态。这就是为什么将Integer
设置为1的an 返回哈希码“ 1”的原因,因为Integer's
哈希码及其值是相同的。字符的哈希码等于其ASCII字符码。如果编写自定义类型,则负责创建一个最佳hashCode
实现,该实现将最能代表当前实例的状态。
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
如果您想了解它们的实现方式,建议您阅读源代码。如果您使用的是IDE,则可以对感兴趣的方法执行+操作,然后查看方法的实现方式。如果您无法做到这一点,则可以通过Google搜索来源。
例如,将Integer.hashCode()实现为
public int hashCode() {
return value;
}
和String.hashCode()
public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
添加回答
举报
0/150
提交
取消