当前位置: 首页 > 知识库问答 >
问题:

equals()方法在Java中如何工作[重复]

宋昊然
2023-03-14

equals方法比较两个对象值是否相等。我的问题是它如何比较这两个物体?它如何判断这两个物体是否相等?我想知道基于它对这两个对象的比较。我不包括hashcode方法。

共有1个答案

燕烨
2023-03-14

默认实现是java.lang.object类中的一个,它只是测试对同一个对象的引用:

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

引用相等运算符在Java规范中是这样描述的:

在运行时,如果操作数值都为null或都引用同一个对象或数组,则==的结果为true;否则,结果为假。

Integer a = new Integer(1000);
Integer b = new Integer(1000);
System.out.println(a==b); // prints false
722     public boolean equals(Object obj) {
723         if (obj instanceof Integer) {
724             return value == ((Integer)obj).intValue();
725         }
726         return false;
727     }
System.out.println(a.equals(b)); // prints true

重写默认行为的类应该根据标识字段(通常是所有字段)的相等性来测试语义相等性。

您似乎知道,应该相应地重写hashcode方法。

 类似资料:
  • 问题内容: 我试图覆盖Java中的方法。我有一堂课,基本上有2个数据字段和。现在,我想重写方法,以便可以在2个对象之间进行检查。 我的代码如下 但是当我写它给我错误时,因为方法只能比较并且是。 Solution 我按照建议使用运算符,问题解决了。 问题答案: Output: `run: – Subash Adhikari - VS - K false – Subash Adhikari - VS

  • 问题内容: 如何覆盖对象类中的equals方法? 即我有 我想将参数obj转换为Person类型,但是如果执行(Person)obj,它将无法正常工作。 问题答案: 您可以将其强制转换为方法,只需使用的实例确保其类型正确

  • 我正在REST API中执行一个方法,您可以通过其ID获取出版物上的注释。CommentServiceImplementation中出现错误,因为它无法解析方法等于(long) 评论服务实施 我首先找到了出版物。然后我找到了评论。最后,如果与发布相关联的注释ID与发布的ID不同,则该注释不属于所述发布。如果是,我会将注释作为DTO返回。据我所知,问题一定是出版物。getId()返回一个长的和注释。

  • 问题内容: 首先,让我们考虑一下Java中的以下表达式。 这些所有语句都可以正常工作。毫无疑问。该表达式的计算结果符合预期,因此将执行该块中的唯一语句。 现在,当我从更改数据类型到,该语句意外评价如下。 这些是与前面代码段中提到的语句等效的语句,只是数据类型已更改,并且它们的行为完全相反。 该表达式被求值,因此,该块内的唯一语句未执行,与前面的语句相反。怎么样? 问题答案: 您正在将a 与进行比较

  • 问题内容: 如果我有一个带有静态方法的util类,它将调用Hibernate函数来完成基本的数据访问。我想知道是否使该方法是确保线程安全的正确方法。 我希望这可以防止对同一数据库实例的信息访问。但是,我现在确定当特定类调用以下代码时,是否阻止所有类调用以下代码。 问题答案: 为了更一般地解决这个问题… 请记住,在方法上使用同步实际上只是简写(假设类是SomeClass): 是相同的 和 是相同的