news 2026/1/26 7:17:44

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/1/22 13:48:19

3步搞定Windows文件快速预览:QuickLook终极使用教程

3步搞定Windows文件快速预览:QuickLook终极使用教程 【免费下载链接】QuickLook Bring macOS “Quick Look” feature to Windows 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook 还在为频繁打开文件而烦恼吗?想要像macOS用户一样按下空…

作者头像 李华
网站建设 2026/1/10 5:56:24

如何通过模型量化技术降低TTS运行资源需求?

如何通过模型量化技术降低TTS运行资源需求? 在智能语音助手、有声书生成和虚拟主播等应用日益普及的今天,高质量文本转语音(TTS)系统正面临一个核心矛盾:用户对音质自然度的要求越来越高,而部署环境却往往受…

作者头像 李华
网站建设 2026/1/2 11:26:57

【开源】运动场馆预约小程序

源码介绍:这套源码是云开发的,不懂,就直接完整搬运过来的,感兴趣的自己下载研究下吧运动场馆预约小程序是一款主要针对城市运动预约的工具类程序, 产品主要服务人群为20-45岁运动爱好者,程序前后端完整代码…

作者头像 李华
网站建设 2026/1/2 11:26:57

Labelme标注神器:5分钟学会VOC格式转换全攻略

Labelme标注神器:5分钟学会VOC格式转换全攻略 【免费下载链接】labelme Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation). 项目地址: https://gitcode.com/gh_mirrors/la/labelme 还在为…

作者头像 李华
网站建设 2026/1/20 3:30:06

跨设备AI计算框架Exo:构建分布式智能集群的完整指南

在人工智能快速发展的今天,部署和运行大型AI模型已成为许多开发者和研究者的迫切需求。然而,传统部署方式往往需要昂贵的专业硬件,限制了普通用户的参与。Exo框架通过创新的分布式计算技术,让普通设备也能组成高性能AI集群&#x…

作者头像 李华
网站建设 2026/1/2 11:23:53

SimpRead插件系统:打造专属阅读体验的完整指南

SimpRead插件系统:打造专属阅读体验的完整指南 【免费下载链接】simpread 简悦 ( SimpRead ) - 让你瞬间进入沉浸式阅读的扩展 项目地址: https://gitcode.com/gh_mirrors/si/simpread SimpRead插件系统为用户提供了强大的功能扩展能力,让这款优秀…

作者头像 李华