news 2026/6/10 17:28:06

Java中的hashCode()和equals()

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中的hashCode()和equals()

一、关于hashCode()

hashCode()是 Java 中Object类的一个原生方法,每个 Java 对象都默认继承了这个方法。它的核心作用是返回一个int 类型的哈希值(也叫散列码),这个值是根据对象的内存地址或内容计算出来的整数。hashCode()的存在主要是用于快捷查找,如Hashtable,HashMap等,hashCode()用来在散列存储结构中确定对象的存储地址。如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同。如果对象的equals方法被重写,那么对象的hashCode()方法也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致。两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里“。

重写了equals(),为什么还要重写hashCode()呢?

想想,你要在一个桶里找东西,你必须先要找到这个桶,重写hashcode()就是用来找到桶,光重写equals()没啥用。

二、关于equals()

2.1、equals和==

==用于比较引用和比较基本数据类型时具有不同的功能:

比较基本数据类型,如果两个值相同,则结果为true

比较引用时比较的是地址,如果引用指向内存中的同一对象,结果为true;

equals()方法实现对象的比较。由于==运算符不允许我们进行覆盖,也就是说它限制了我们的表达。因此我们复写equals()方法,达到比较对象内容是否相同的目的。而这些通过==运算符是做不到的。

2.2、object类的equals()方法的比较规则

如果两个对象的类型一致,并且内容一致,则返回true,这些类有:

java.io.file,java.util.Date, java.lang.string, 包装类(Integer,Double等)

String s1=new String("abc"); String s2=new String("abc"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); 运行结果为false true
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:53:30

微PE官网提供的工具能否跑AI?实测VoxCPM-1.5-TTS-WEB-UI可行性

微PE官网提供的工具能否跑AI?实测VoxCPM-1.5-TTS-WEB-UI可行性 你有没有想过,一张U盘启动的系统维护工具——比如微PE——也能跑起现代AI大模型? 这听起来像天方夜谭:一个专为重装系统、修复引导设计的轻量级环境,真的…

作者头像 李华
网站建设 2026/6/10 15:03:35

RocketMQ的Producer是如何发送消息的?

大家好,我是锋哥。今天分享关于【RocketMQ的Producer是如何发送消息的?】面试题。希望对大家有帮助; RocketMQ的Producer是如何发送消息的? 超硬核AI学习资料,现在永久免费了! RocketMQ 的 Producer 是负责发送消息的组件&…

作者头像 李华
网站建设 2026/6/10 12:30:15

MCP应用安全成熟度模型:从被动响应到主动防御的实践指南

场景引入:一次代价高昂的MCP安全事件 【免费下载链接】mcp-use 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-use 2024年第三季度,某知名电商平台因MCP文件系统服务存在未授权访问问题,导致超过50万用户的个人数据被泄露。事后分…

作者头像 李华
网站建设 2026/6/9 22:03:45

5分钟掌握PNG动画极致压缩:帧合并技术深度解析

5分钟掌握PNG动画极致压缩:帧合并技术深度解析 【免费下载链接】VPet 虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序 项目地址: https://gitcode.com/GitHub_Trending/vp/VPet 在桌面宠物软件VPet的开发过程中,PNG动画压缩方案成…

作者头像 李华
网站建设 2026/6/10 15:33:21

UI-TARS完整指南:三步解决电脑操作重复性难题

UI-TARS完整指南:三步解决电脑操作重复性难题 【免费下载链接】UI-TARS 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS 你是否每天都要在电脑上重复点击、输入、拖拽同样的操作?这些机械性的工作不仅消耗时间,更消磨创造…

作者头像 李华
网站建设 2026/6/10 11:36:01

niri源码编译终极指南:从零构建高性能Wayland compositor

niri源码编译终极指南:从零构建高性能Wayland compositor 【免费下载链接】niri A scrollable-tiling Wayland compositor. 项目地址: https://gitcode.com/GitHub_Trending/ni/niri 厌倦了官方包更新滞后?渴望体验最前沿的窗口管理功能&#xff…

作者头像 李华