为了账号安全,请及时绑定邮箱和手机立即绑定

用Java如何计算hashCode()

用Java如何计算hashCode()

守着星空守着你 2019-10-29 14:05:49
hashCode()java中方法返回什么值?我读到它是一个对象的内存引用new Integer(1)。为String("a")97。我很困惑:是ASCII还是什么类型的值?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-10-29
?
尚方宝剑之说

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;

   }


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 1397 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信