博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?
阅读量:4359 次
发布时间:2019-06-07

本文共 550 字,大约阅读时间需要 1 分钟。

首先明确一点,equals是方法,==是操作符。

 

1. 如果比较的是基本数据类型:

 只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的。

 

2. 如果比较的是引用类型:

 ==:比较两个引用是不是指向同一个对象实例,即相同的地址。

equals:equals方法是Object类的方法,默认是直接调用==来实现。如果没有被重写,那么调用equals与==没有区别。

但是,在一些类库中这个方法被覆盖了,比如八大基本数据类型的包装类和String类,它们的equals方法比较的是值是否相同,此时的equals就与==有区别了。

我们自己也可以根据需要,来重写equals方法。

 

注意:

     hashCode方法也是可以来比较两个对象是否相等,但是很少直接使用。hashCode方法返回的是一个int值,可以看做是一个对象的唯一编码,如果两个对象的hashCode值相同,我们应该认为这两个对象是同一个对象。

     所以,我们在对equals方法重写之后,建议一定要对hashCode方法重写,以保证相同的对象返回相同的hash值,不同的对象返回不同的hash值。

 

转载于:https://www.cnblogs.com/jiangyi-uestc/p/5679224.html

你可能感兴趣的文章
排序笔记
查看>>
一款纯css3实现的机器人看书动画效果
查看>>
加班与效率
查看>>
MyEclipse下SpringBoot+JSP整合过程及踩坑
查看>>
重定向和管道
查看>>
实验五
查看>>
STL学习笔记(第二章 C++及其标准程序库简介)
查看>>
Operator_countByValue
查看>>
Java 日期往后推迟n天
查看>>
Web应用漏洞评估工具Paros
查看>>
Git 和 Github 使用指南
查看>>
20180925-4 单元测试
查看>>
mysql的数据存储
查看>>
[转载] Activiti Tenant Id 字段释疑
查看>>
[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
查看>>
SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能
查看>>
最小权限的挑战
查看>>
jquery 视觉特效(水平滚动图片)
查看>>
SVG笔记
查看>>
linux下使用dd命令写入镜像文件到u盘
查看>>