当前位置: 首页 > news >正文

equals与hashCode的关系探究

equals与hashCode的关系:

1.equals 判断是否为同一个对象 hashCode判断是否为同一类 大部分类在重写equals方法时会重写hashCode方法​

2.如果两个对象相同 (equals方法返回true)那么他们的hashCode值一定相同​

3.如果两个对象不同(equals方法返回false)那么他们的hashCode值可能相同,可能不同​

4.如果两个对象hashCode值相同(存在哈希冲突),他们可能相同可能不同(equals方法可能返回true,可能返回false)​

5.如果两个对象hashCode值不同,那么他们两个肯定不同(equals=false)

 为了直观地感受这一关系,代码创建了两个字符串对象:
 

String a = "ok";
String b = new String("ok");
System.out.println(a == b);
System.out.println(a.hashCode());
System.out.println(b.hashCode());

 这里 a==b 返回的是false,因为”==”,比较的是引用地址,a是字符串常量池中的引用,b是通过new关键字在堆中的创建的对象,然而它们的hashCode值是相同的,这印证了“如果两个对象相同(equals方法返回true)那么他们的hashCode值一定相同,因为字符串类重写了equals和hashCode方法,保证了内容相同的字符串hashCode一致

相关文章:

  • 一 、环境的安装 Anaconda + Pycharm + PaddlePaddle
  • 火山云生态的体现
  • 容器内部无法访问宿主机服务的原因及解决方法
  • 深入解析:RocketMQ、RabbitMQ和Kafka的区别与使用场景
  • MySQL的日志--Redo Log【学习笔记】
  • opencv--图像
  • Synternet数据流正式上线Google Cloud Web3
  • Vue3 模板语法
  • AIGC架构与原理
  • gem5教程第四章 了解gem5统计和输出
  • Spring Cloud Eureka 与 Nacos 深度解析:从架构到对比
  • 设备存储空间不足怎么办?
  • 《浔川代码编辑器v2.1.0预告》
  • 硬件基本概念
  • ElasticSearch深入解析(二):核心概念
  • mybatis高级查询:一对多配置,一次性查出主表和子表中的数据
  • OJ笔试强训_25至48天_每天三道OJ
  • flutter和vue3项目利用webview_flutter插件通信
  • 亚信安全与联通数科达成战略合作,成立联信事业部
  • 信号与槽的认识
  • 商务部:外贸优品中华行活动采购意向超167亿元
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 长三角议事厅| AI作曲时代:长三角如何奏响数字音乐乐章
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 魔都眼|静安光影派对五一启幕:苏河湾看徐悲鸿艺术画作