news 2026/9/3 3:56:25

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/9/3 3:19:26

如何为TTS系统添加使用量报表与计费功能?

如何为TTS系统添加使用量报表与计费功能? 在企业级AI服务日益普及的今天,一个看似“能用就行”的语音合成系统,一旦进入生产环境,很快就会面临这样的问题:谁用了多少资源?成本该怎么分摊?有没有…

作者头像 李华
网站建设 2026/9/3 0:02:23

iOS设备上的Minecraft Java版终极启动指南

iOS设备上的Minecraft Java版终极启动指南 【免费下载链接】PojavLauncher_iOS A Minecraft: Java Edition Launcher for Android and iOS based on Boardwalk. This repository contains source code for iOS/iPadOS platform. 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/9/3 0:01:32

PID控制算法学习枯燥?用VoxCPM-1.5-TTS-WEB-UI生成语音讲解辅助理解

用语音讲解让PID控制不再枯燥:基于VoxCPM-1.5-TTS-WEB-UI的听学实践 在工控领域摸爬滚打过的人都知道,第一次接触PID控制算法时的那种“似懂非懂”有多折磨人。比例、积分、微分三个术语堆在一起,公式推导密密麻麻,光靠眼睛盯着屏…

作者头像 李华
网站建设 2026/9/3 0:56:11

基于深度神经网络的课程教学评价系统-计算机毕业设计源码+LW文档分享

摘 要 在当前数字化的快速推进中,课程教学评价系统正加速向线上模式转变,其关键性愈发显著。鉴于用户对课程教学评价系统需求的日益增加,开发一个高效且智能的管理系统变得至关重要。本文介绍了一个基于Django框架构建的课程教学评价系统&am…

作者头像 李华
网站建设 2026/9/3 3:38:40

Fluent UI复杂表单性能优化与开发效率提升实战

Fluent UI复杂表单性能优化与开发效率提升实战 【免费下载链接】fluentui 项目地址: https://gitcode.com/GitHub_Trending/of/fluentui 在现代Web应用开发中,复杂表单处理往往成为性能瓶颈和开发效率低下的重灾区。Fluent UI作为微软推出的企业级UI框架&am…

作者头像 李华
网站建设 2026/9/2 23:42:07

UI-TARS:让手机自动化变得触手可及

你是否曾为重复的手机操作感到厌倦?每天需要反复点击相同的按钮、切换相同的应用、执行相同的流程?现在,UI-TARS(UI任务自动化与识别系统)为你带来了全新的解决方案——无需编程基础,轻松实现手机自动化操作…

作者头像 李华