文档章节

equals()和hashCode()

H
 Henrykin
发布于 2016/11/04 11:07
字数 276
阅读 7
收藏 0

    equals()源码:

 public boolean equals(Object obj) {
        return (this == obj);
    }

    由源码可知,默认的equals方法是直接对比两个对象的引用是否相等,而对象的引用实际上是指向该对象在内存中的地址,所以只有当两个引用是指向同一个地址时,才会返回true

    在某些场合下,我们需要重写equals,来实现自己的判断逻辑。

    hashCode()源码:

public native int hashCode();

    这是一个本地方法,为什么需要设置为本地方法呢?我的猜测是因为hashCode()是通过对象在内存中的地址计算出hashCode的值,并返回。而要想获得对象的内存地址就需要c语言来通过操作系统获取了。这个方法用到了哈希表(hash table),不懂的可以看一下数据结构。某些查找算法可以通过某个关键值获得某个数据在内存中的存储地址。

    默认的toString()的返回值中就包含该对象的hashCode

      toString()源码:

 public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

 

© 著作权归作者所有

H
粉丝 4
博文 102
码字总数 12788
作品 0
广州
私信 提问
Java 中的equal()和hascode()方法

equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值。 而hashCode()是对象或变量通过哈希算法计算出的哈希值。 之所以有hashCode方法,是因...

vshcxl
2016/10/25
6
0
Java hashCode() 和 equals()的若干问题解答

本章的内容主要解决下面几个问题: 1、 equals() 的作用是什么? 2 、equals() 与 == 的区别是什么? 3、 hashCode() 的作用是什么? 4 、hashCode() 和 equals() 之间有什么联系? 第1部分 ...

刘诗书
2017/11/27
0
0
Java之hashCode()和equals()方法

程序世界和现实世界其实是一样的,相等和相同是不同的概念,就此简要说明一下其中的含义: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hash...

董广明
2014/04/01
0
3
equals和hashCode的区别和联系

一、前言 前段时间使用list.remove(obj)的时候重写了obj的equals方法,因为list的remove是以equals来判断标准的。但是,今天被公司的代码扫描工具提示未重写hashCode方法!!之前准备面试时也...

叫我宫城大人
2017/08/23
0
0
hashCode() 和 equals()

第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等。 equals() 定义在JDK的Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。源...

小菜鸡1
2016/08/17
15
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员分享Python自动化运维开发实战 六、流程控制

好程序员分享Python自动化运维开发实战 六、流程控制 PYTHON 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 Python程序语言指定任何非0和非...

好程序员IT
26分钟前
0
0
5年经验的Java工程师面试答不出反射和动态代理!怕是只会CRUD哦

分享阿里 P8 高级架构师吐血总结的 《BATJ大厂高级Java必问面试学习视频》,附送 100G 面试学习视频文档 阿里 P8 级高级架构师吐血总结的面试学习视频, 内容覆盖很广,分布式缓存、RPC 调用、...

戎码益深
46分钟前
1
0
加权查询

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_cross_fields_queries.html 假设二维向量,如果一个维度设为无穷大,无论另一个维度为多大(具体值),向量都是与坐标轴平行...

Java搬砖工程师
47分钟前
3
0
GLIBC等相关文件升级更新

###参考资料:https://blog.csdn.net/glongljl/article/details/80156243###安装更新libstdc++.so文件https://blog.csdn.net/xdzhangzhenhao/article/details/80746403找一个更高版本的......

KYO4321
48分钟前
2
0
C# Dev XtraTabControl添加关闭页签功能

这个功能在界面操作上很常见,记录下,希望可以帮助您,请持续关注我。 一、添加关闭功能 若要tabpage显示关闭按钮,把xtraTabControl的ClosePageButtonShowMode属性设为InAllTabPageHeaders...

黑鹰客栈
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部