用Java如何计算hashCode()

hashCode()java中方法返回什么值?


我读到它是一个对象的内存引用new Integer(1)。为String("a")97。


我很困惑:是ASCII还是什么类型的值?


守着星空守着你
浏览 1399回答 3
3回答

跃然一笑

哈希码是一个整数值,表示被调用的对象的状态。这就是为什么将Integer设置为1的an 返回哈希码“ 1”的原因,因为Integer's哈希码及其值是相同的。字符的哈希码等于其ASCII字符码。如果编写自定义类型,则负责创建一个最佳hashCode实现,该实现将最能代表当前实例的状态。

尚方宝剑之说

如果您想了解它们的实现方式,建议您阅读源代码。如果您使用的是IDE,则可以对感兴趣的方法执行+操作,然后查看方法的实现方式。如果您无法做到这一点,则可以通过Google搜索来源。例如,将Integer.hashCode()实现为&nbsp; &nbsp;public int hashCode() {&nbsp; &nbsp; &nbsp; &nbsp;return value;&nbsp; &nbsp;}和String.hashCode()&nbsp; &nbsp;public int hashCode() {&nbsp; &nbsp; &nbsp; &nbsp;int h = hash;&nbsp; &nbsp; &nbsp; &nbsp;if (h == 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int off = offset;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;char val[] = value;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int len = count;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i < len; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h = 31*h + val[off++];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hash = h;&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp;return h;&nbsp; &nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java