java - 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
错误的
错误的
解决方案
您的代码不使用字符串,并且由于您的类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“继承”的内容不同。
推荐阅读
- python - 我有一个很大的字符串作为字符串,需要在其中找到一个特定的单词并返回它后面的数字
- flutter - 在初始化程序中只能访问静态成员。将数据输入作为字符串抓取,转换为双精度。为什么这行不通?
- flutter - 在颤振/飞镖中对未来错误进行单元测试的正确方法是什么?
- python - 页数结束时停止网页抓取脚本
- javascript - ReferenceError:未定义函数。方法调用类中的其他方法
- jenkins - 如何使用 Jenkins Multibranch Pipeline 检查同一分支上的先前构建是否已开始 <3 小时或 >3 小时
- javascript - 在Javascript中形成父子结构
- javascript - 如何从 React 中的另一个组件打开 Modal
- java - Java - 查找从类加载器返回特定类型的所有方法
- r - 使用 Google Colab 在 R 中加载多个包