当前位置: 首页 > 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插件通信
  • 亚信安全与联通数科达成战略合作,成立联信事业部
  • 信号与槽的认识
  • 云南大理州洱源县发生4.8级地震,震源深度10千米
  • 【社论】高度警惕AI谣言对网络空间的污染
  • “未来3天公布”,特朗普俄乌“和平计划”是什么?普京泽连斯基什么态度?
  • 世界最大全电驱可拆装环保绞吸船投入官厅水库清淤试点工程
  • 新童谣童诗征稿活动在沪开启:设三个创作主题,面向全国征集
  • 如何保护人工智能领域的知识产权?上海市知识产权局局长解答