java中经常使用“==”和equals()方法来判断对象是否相等,下面就来说下怎么判断两个对象相等。
每个在堆上的对象都会有它的引用变量,如果没有引用变量引用的对象,堆上的gc回来找它聊天的。
“==”的比较,符号两边都是对象的引用变量,如果比较返回true的话,那就表示符号两边的引用变量引用的是同一个对象,因为“==”比较的是引用变量内的值,所以“==”比较就是引用比较。
但是如果是比较两个不同对象在意义上是否相同的呢?比如两个student对象,对象的实例变量name,sex都一样,我们能否认为它们是两个相等的对象。
equals()方法
这就要用到equals()方法,首先我们要知道的是equals()方法是object这个所有类的父类中就被定义了。在object中equals的比较方式跟“==”类似,也是只有比较的两个对象为同一个对象时才会返回true,否则都会返回false。所以我们在类中就会重写equals()方法来完成堆上两个不同对象在意义上是否相同,在重写equals()方法之前我们还要重写hashcode()方法,因为我们再调用equals()方法的时候,它会先将两个对象的hashcode()返回的值进行比较,如果不相同就会返回false,我以我们在重写hashcode()方法时会让同类的所有对象都返回一个相同的hashcode值,通过在hashcode()方法中声明一个result变量值,例如,
[code=”java”]public int hashcode() {
int result=17;
result=31*result+name!=null?name.hashcode():0;
result=31*result+region!=null?region.hashcode():0;
result=31*result+position!=null?position.hashcode():0;
return result;
}
然后回到equals()方法判断两个对象的实例变量是否相同,如果相同则equals()方法返回true,如果实例变量不同则会返回false;
所以我们要怎么重写equals()方法,需要看具体的类,因为每个类的实例变量都不同,(新建一个对象的话如果没有特殊的构造函数,实例变量会有默认值,所以新建的两个不同类型也是相等的,因为实例变量都是默认值即相同)。
0
0
相关文章
Java 中对象引用的深层理解:为何两个变量操作同一银行账户?
在Java里包装类型为何存在_Java基本类型封装说明
java多态中成员如何访问
在Java中this关键字的作用是什么_Javathis指向规则说明
在Java中集合适合存放对象吗_Java对象容器设计解析
java速学教程(入门到精通)
下载
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
Golang 性能分析与pprof调优实战
本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。
9
2026.01.22
热门下载
精品课程
相关推荐
/
热门推荐
/
最新课程
PHP面向对象基础课程(更新中)
共12课时 | 0.7万人学习
信息系统项目管理师(软考高级)一站式通关课程
共112课时 | 11.9万人学习
Go语言教程-全程干货无废话
共100课时 | 9.8万人学习
最新文章









