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

Java基础高频面试

== 与 equals 区别

==运算符

  • 用于基本类型时,比较变量存储的数值是否相等。
  • 用于引用类型时,比较堆内存地址是否相同(即是否为同一对象)。

equals()方法

  • 默认继承自Object类,与==作用相同(比较地址)。
  • 但许多类(如StringInteger重写了equals(),改为比较对象内容是否相同。

同理如果是我们自定义的类,需要我们自己重写 equals,否则使用 equals 得到的结果都是 false

@Override
public boolean equals(Object obj) {if (this == obj) return true;if (obj instanceof Student) {Student s = (Student) obj;return this.age  == s.age  && this.name.equals(s.name); }return false;
}System.out.println(stu1  == stu2);      // false(不同地址)
System.out.println(stu1.equals(stu2));  // true(因为重写了equals方法)

hashCode() 与 equals 的关系

Java规范要求——等同对象必须哈希相同,根据Java规范,若a.equals(b)true,则a.hashCode() 必须等于b.hashCode()。不重写hashCode()会导致违反规则

普通对象(不涉及 Hash 集合操作)

  • 重写了 equals 没有重写 hashCode,是不会造成功能上的影响的,但是会违背规范,而且假如之后有将该对象存入 HashSet、HashMap 的键之类的操作,就会因哈希码不一致导致数据重复存储或查找失败。

普通对象(涉及 Hash 集合操作)

  • 重复存储HashSet可能存储多个内容相同的对象,破坏集合的唯一性。
  • 查找失败:即使equals返回true,因哈希码不同,集合无法定位对象,导致contains()get()失败。

举个例子:

HashSet 的 add 操作:

  1. 第一步:计算哈希值,调用对象的hashCode()方法,确定该元素在哈希表中的存储位置(桶)。
  2. 第二步:比较哈希值
  • 若目标桶为空,直接存储。(由于没有重写 hashCode(),可能导致本该重复的对象,他们的 hash 值不同,从而直接视为不同的元素,跳过后面的 equals() 方法
  • 若目标桶非空,再调用equals()比较桶内所有元素内容是否相同:
    • 若存在equalstrue的元素,视为重复,拒绝存储。
    • <

相关文章:

  • Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)
  • 前端权限管理
  • C语言学习之结构体
  • 《代码整洁之道》第9章 单元测试 - 笔记
  • 《代码整洁之道》第5章 格式 - 笔记
  • MRI学习笔记-conjunction analysis
  • docker(3) -- 图形界面
  • 驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
  • 《操作系统真象还原》第十章(1)——输入输出系统
  • 加密算法 AES、RSA、MD5、SM2 的对比分析与案例(AI)
  • 「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言
  • 2025.4.21-2025.4.26学习周报
  • 泰迪杯实战案例超深度解析:基于YOLOv5的农田害虫图像识别系统设计
  • 「Mac畅玩AIGC与多模态04」开发篇01 - 创建第一个 LLM 对话应用
  • 迷你世界UGC3.0脚本Wiki组件事件管理
  • 显存在哪里看 分享查看及优化方法
  • 分布式一致性算法起源思考与应用
  • 从“世界工厂”到“智造之都”:双运放如何改写东莞产业基因?
  • 云原生--核心组件-容器篇-5-Docker核心之-容器
  • 大模型、知识图谱和强化学习三者的结合,可以形成哪些研究方向?
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元
  • 杭州一季度GDP为5715亿元,同比增长5.2%
  • 上海灵活就业人员公积金新政有哪些“创新点”?
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 中国纪检监察报刊文:要让劳动最光荣成为社会的崇高风尚
  • 《深度参与全球海洋治理的重大科技问题战略研究》一书出版发行