hashCode()方法是什么,hashCode相同代表什么?

想知道hashCode是什么,就必须先了解一下什么是哈希Hash.简单来说Hash就是把任意长度的数据变成固定长度的数据.想详细了解一下的也可以参考我另一篇Blog什么是Hash哈希

所以Java中就默认地定义了Hash函数来获取一个hashCode.我们可以看看Java中hashCode()的原码

  /*** Returns a hash code for this string. The hash code for a* {@code String} object is computed as* <blockquote><pre>* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]* </pre></blockquote>* using {@code int} arithmetic, where {@code s[i]} is the* <i>i</i>th character of the string, {@code n} is the length of* the string, and {@code ^} indicates exponentiation.* (The hash value of the empty string is zero.)** @return  a hash code value for this object.*/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;}

根据这个函数,每个对象都能获得一个hashCode.

hashCode是怎样获得的

有原码可知,hashCode的值是由value的字符串决定的,与该对象在内存中的地址是无关的.

两个对象对象的hashCode()的返回值相同意味着什么

返回值并不能意为着什么,这是由于hash函数的特性所决定的,hash函数的值相同,两者的初始值不一定相同

但是,如果两者的hash值不同,那么两者的初始值一定不同.例如:

          String str1 = "通话";String str2 = "重地";System.out.println("str1:"+str1+" hashCode() is "+ +str1.hashCode());System.out.println("str2:"+str2+" hashCode() is "+ +str2.hashCode());System.out.println(str1.equals(str2));

输出结果:

hashCode()方法是什么,hashCode相同代表什么相关推荐

  1. hashCode()方法(覆盖hashCode()方法)

    import java.util.*; import java.lang.Comparable; /** * @desc 比较equals() 返回true 以及 返回false时, hashCode ...

  2. JAVA中重写equals()方法的同时要重写hashcode()方法

    object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法 ...

  3. Java拾遗:001 - 重写 equals 和 hashCode 方法

    2019独角兽企业重金招聘Python工程师标准>>> 重写equals方法 在Java中Object类是一个具体类,但它设计的主要目的是为了扩展,所以它的所有非final方法,都被 ...

  4. Java基础提升篇:equals()与hashCode()方法详解

    概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) public int hashCode() Object类是类继承 ...

  5. JAVA中list.contains()方法,要重写equals(),hashcode()方法

    今天动力节点java培训机构小编为大家介绍"JAVA中list.contains()方法,要重写equals(),hashcode()方法",希望能够帮助正在学习java的零基础学 ...

  6. hashCode()方法的性能优化

    原文链接,译文链接,原文作者: Robert Nystrom,译者:有孚 本文主要讨论下不同的hashCode()的实现对应用程序的性能影响. hashCode()方法的一个主要作用就是使得对象能够成 ...

  7. java重写6,java重写equals()方法和hashCode()方法

    1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...

  8. java中的equals方法+hashCode方法

    [0]README 0.1)以下内容均为原创,包括源代码, 旨在理清 equals 和 hashCode 方法的 实现原理: 0.2) for full resource code, please v ...

  9. 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...

最新文章

  1. oracle截取字符串
  2. linux 安装 加入内核参数,Linux 实现自动安装服务组件以及优化内核参数
  3. jupyter 接受参数
  4. maven 整合支付宝,导入alipay-sdk-java包到本地仓库,远程仓库
  5. 解决办法:“Cannot lock storage /data/hadoop/hdfs/name. The directory is already locked.”
  6. 小学奥数_7649 我家的门牌号
  7. php中如何滚动文字,HTML_网页HTML代码:滚动文字的制作,制作滚动文字 通过本章前面 - phpStudy...
  8. [Vue warn]: Error in mount hook: “TypeError: Cannot read properties of null (reading ‘getAttribute‘)
  9. java 应用监控系统_GitHub - jiangbin216/JavaMonitor: 一款适用于Java应用的在线性能监控系统(JM)...
  10. SOTA级发丝抠图模型PP-Matting重磅开源,支持多场景精细化分割!
  11. 冯诺依曼体系结构_存算一体:突破冯诺依曼架构瓶颈的希望?
  12. 2020年度中国雇主榜发布;全球发布商用5G移动宽带网络数量已达109个 | 美通企业日报...
  13. 马斯克发起投票:是否应该出售特斯拉10%的股票?超5成粉丝赞成
  14. 微信推出赞赏码,有人欢喜有人愁
  15. SQL的概述及DDL
  16. 除了 P站,还有这些 站 ~~
  17. SEM测试线扫与面扫
  18. 使用Perl编写协议分析脚本
  19. Python tkinter Text 多行文本框变化事件
  20. 字符集、标识符、常量与变量

热门文章

  1. Linux nl 命令使用介绍
  2. js实现局部打印,并处理浏览器提示Avoid using document.write()导致无法打印问题
  3. TokenGazer 深度研究 | Synthetix:合成资产市场增长迅速 其死亡螺旋值得警惕
  4. 论文笔记:CornerNet—Detecting Objects as Paired Keypoints
  5. 订单23系统服务器,第3节芙拉吉尔 订单No23.系统服务器 死亡搁浅图文攻略 订单流程+设施介绍+道具介绍+界面操作_游侠网...
  6. EBS R12多组织访问控制
  7. Android平台png转jpg的实现
  8. 泛型是双刃剑?Go1.18 编译会慢近 20%
  9. 岁月划过生命线(我的2013-大二.上)
  10. 美国计算机专业nlp大学排名,美国人工智能专业排名前十的学校