首页 > 解决方案 > OBJECT EQUALS 方法在内部做什么?如何知道存储在对象中的值,例如:Object_Comparison?

问题描述

我知道 Java 中 Object 类中的 .equals 方法比较了对象的内容,但它在下面的代码中做了什么,为什么我在注释行中输入它是 FALSE?请告诉我。

public class Object_Comparison {

public static void main(String[] args) {        
    Object_Comparison T1 = new Object_Comparison();
    Object_Comparison T2 = new Object_Comparison();
    
    System.out.println("T1-->"+T1);
    System.out.println("T2-->"+T2);
    
    System.out.println("T1-->"+T1.hashCode());
    System.out.println("T2-->"+T2.hashCode());
    
    System.out.println(T1==T2);
    
    System.out.println(T1.equals(T2)); // what does it contain to do and produces the result as false?
}
}

开/关:

T1-->Object_Comparison@1db9742

T2-->Object_Comparison@106d69c

T1-->31168322

T2-->17225372

错误的

错误的

标签: javastringequals-operator

解决方案


您的代码不使用字符串,并且由于您的类Object_Comparison没有覆盖java.lang.Object的基本equals()方法,因此会发生预期的情况。

您的代码创建了两个不同的对象 T1 和 T2。如果将“引用”与这些对象进行比较,它们是不同的(T1 != T2)。由于 ... 的基本实现equals()只是进行相同的检查,该方法也返回 false 。

鉴于您当前的代码,您也可以替换

Object_Comparison T1 = new Object_Comparison();
Object_Comparison T2 = new Object_Comparison();

Object t1 = new Object();
Object t2 ...

并得到完全相同的结果。因为您在示例代码中显示的任何内容都与您从 java.lang.Object“继承”的内容不同。


推荐阅读