首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么比较我的两个类返回false?

为了给出完善且全面的答案,首先需要了解问题的背景和具体情况。根据提供的问答内容,问题是关于比较两个类返回false的原因。下面是一个可能的解答:

在比较两个类返回false的情况下,可能存在以下几种可能的原因:

  1. 对象引用不同:如果两个类的比较是通过对象引用进行的,那么当两个类的对象引用不同的时候,比较的结果会返回false。这是因为对象引用不同表示两个对象在内存中的位置不同,即使它们的属性值相同,也会被认为是不同的对象。
  2. equals方法未重写:在Java中,如果没有重写equals方法,默认会使用Object类中的equals方法进行比较。Object类中的equals方法是通过比较对象的引用来判断是否相等的,而不是比较对象的属性值。因此,如果两个类没有重写equals方法,那么比较的结果可能会返回false,即使它们的属性值相同。
  3. equals方法重写不正确:如果两个类重写了equals方法,但是重写的逻辑不正确,比如没有正确比较对象的属性值,那么比较的结果可能会返回false。在重写equals方法时,应该根据类的属性值来判断两个对象是否相等。
  4. hashCode方法未重写:在Java中,如果重写了equals方法,通常也需要重写hashCode方法。hashCode方法用于计算对象的哈希码,而哈希码在比较对象是否相等时起到了重要的作用。如果两个类的hashCode方法没有正确重写,那么比较的结果可能会返回false。

综上所述,比较两个类返回false的原因可能是对象引用不同、equals方法未重写或重写不正确、hashCode方法未重写等。在具体分析问题时,需要查看代码实现并检查以上可能的原因。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JAVA中重写equals()方法为什么要重写hashcode()方法说明

重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值。如果在将一个对象用put()方法添加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个 hashCode()值,那么就无法重新取得该对象了。所以,如果你的hashCode()方法依赖于对象中易变的数据,那用户就要小心了,因为此数据发生变化时,hashCode()就会产生一个不同的hash码,相当于产生了一个不同的“键”。        Object的hashCode()方法,返回的是当前对象的内存地址。下次如果我们需要取一个一样的“键”对应的键值对的时候,我们就无法得到一样的hashCode值了。因为我们后来创建的“键”对象已经不是存入HashMap中的那个内存地址的对象了。        我们看一个简单的例子,就能更加清楚的理解上面的意思。假定我们写了一个类:Person (人),我们判断一个对象“人”是否指向同一个人,只要知道这个人的身份证号一直就可以了。        先来个没有重写Code类的hashcode()的例子吧,看看是什么效果:

01
领券