更多课程 选择中心

Java培训
美国上市教育机构

400-111-8989

Java培训

Java中hashCodes是怎么实现的呢?

  • 发布:Java培训
  • 来源:零基础学Java
  • 时间:2020-01-06 17:41

Java中hashCode的实现,从我们刚学Java就知道,要重写equal就要一起重写hashCode。但是你有了解过hashCode是如何实现吗?

1、什么是hashCode?

hash是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。<摘自百度百科>

总结

能够将数据压缩,针对同一输入具有唯一输出,存在数据冲突。

2、hashcode能干什么

Java的实现

既然Java中所以的对象都继承自Object。那我们就看看Object的hashCode实现吧。竟然是native方法,查看hash实现源码发现有以下实现方式。

随机数:基于内存地址生成

固定值:1,用来测试

自增:利用位移生成随机数

可以看到除了第三种,其余的算法都不具有一致性。那么当我们没有重新Object.hashCode()的时候,JVM是怎么处理生成的hashcode呢?

对象头:

jvm 将这种方式生成的hashcode存到了Java对象头里。对象头只是存储Object.hashCode()方法生成的hash。如果我们重新的hashCode()方法便不需要存到对象头。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Java中去除字符串中空格的方法
下一篇:Java中static的含义和用法
java怎么写网页Ping呢?

java怎么写网页Ping呢?

Java中的Objects是如何定义的?

Java中的Objects是如何定义的?

0基础应该如何学习java?

0基础应该如何学习java?

JAVA中的static关键字作用与用法

JAVA中的static关键字作用与用法

选择城市和中心
贵州省

福建省

  • 达内厦门软件园中心
广西省

海南省