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:55:53

Espanso终极指南:5分钟掌握跨平台文本扩展神器

Espanso终极指南:5分钟掌握跨平台文本扩展神器 【免费下载链接】espanso Cross-platform Text Expander written in Rust 项目地址: https://gitcode.com/gh_mirrors/es/espanso 想要告别重复输入,一键快速输入常用短语、代码片段和复杂格式文本吗…

作者头像 李华
网站建设 2026/6/10 14:40:39

安装包签名验证失败?检查VoxCPM-1.5-TTS-WEB-UI部署环境配置

安装包签名验证失败?检查VoxCPM-1.5-TTS-WEB-UI部署环境配置 在语音合成技术快速普及的今天,越来越多开发者希望将高质量TTS能力集成到自己的项目中。像 VoxCPM-1.5-TTS-WEB-UI 这类开箱即用的本地化推理系统,凭借其高保真音质和可视化操作界…

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

强烈安利2025本科生AI论文软件TOP8:开题报告神器测评

强烈安利2025本科生AI论文软件TOP8:开题报告神器测评 2025年本科生AI论文写作工具测评:为什么你需要这份榜单 随着人工智能技术的不断进步,越来越多的本科生开始借助AI论文软件提升写作效率、优化内容质量。然而,面对市场上琳琅满…

作者头像 李华
网站建设 2026/6/10 17:46:10

聊天室H5实时群聊聊天室全开源系统

源码介绍:挺不错的一款在线实时群聊聊天室源码,访问首页带自动注册账号功能,支持用户创建群聊,设置群禁言 测试环境:MySQL5.6,PHP7.2 支持发送图片、表情包,后台可以查看所有聊天记录下载地址&a…

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

终极解决方案:为什么你的LLaMA模型总是加载失败?

终极解决方案:为什么你的LLaMA模型总是加载失败? 【免费下载链接】llama.cpp Port of Facebooks LLaMA model in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 当你在深夜尝试运行那个期待已久的AI模型,却在终端看…

作者头像 李华