equals()和 == 区别。为什么重写equals 要重写hashcode详细解答
创始人
2025-05-30 05:42:20
0

equals()和 == 区别。为什么重写equals 要重写hashcode详细解答

用法区别&来源区别

== 是运算符,equals是Object类定义的一个方法 ,
区别一:一个是运算符,一个是方法
区别二:== 可以用于基本数据类和引用数据类型,equals 只能用于引用类型

本质区别

== 两端如果是基本数据类型,就是判断值是否相同
equals在重写之后,判断两个对象的属性值是否相同
equals如果不重写,其实就是 == 符号
(Object类下不重写)源码如下:
在这里插入图片描述

为什么重写equals?

重写equals可以让我们自己定义判断两个对象是否相同的条件
扩展(哈希码:一个类的对象,区别于当前类其他任何一个类的编码)
Object中定义的hashcode方法生成的哈希码能保证同一个类的对象的哈希码一定是不同的
当equals返回为true,我们在逻辑上可以认为是同一个对象,但是查看哈希码,发现哈希码不同,和equals方法返回结果违背。
重写hashcode之后,我们可以自定义哈希码的生成规则,可以通过对象的属性值计算出哈希码。
Object中的hashcode 方法生成的哈希码和对象本身的属性无关。
HashMap 中,借助equals 和 hashcode 方法来完成数据的存储,将对象的内容查询转为根据索引查询。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...