java - 覆盖等于和等于之间有什么区别?
问题描述
我是 Java 和 StackOverflow 的新手,但我已经阅读了一些关于 equals 的答案,他们说:
Equals 方法比较两个对象的身份,如果它们是
相同,它返回 TRUE 。而如果你不覆盖方法 Equals
它的作用类似于 ==(如果 2 个变量引用同一个对象,则返回 true)。
Integer x = new Integer(4);
Integer y = new Integer(4);
System.out.println(x.equals(y));
System.out.println(x == y);
如果上面的查询是正确的,为什么这段代码会打印 TRUE 和 FALSE,因为我们没有覆盖方法 equals?
解决方案
因为类Integer
确实覆盖了equals方法,它的实现如下:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
推荐阅读
- rx-java - Schedulers.from(this.executor) 是如何工作的?
- rest - 用于在 ServiceNow 中添加附件的 REST API 不起作用
- vba - 跟踪复制excel文件
- google-cloud-platform - 如何在没有对话流的情况下使用 Google 助手
- linux - 如何在 Linux 的 VS CODE 中打开我的 GIT REPO
- javascript - php 获取 document.getelementbyid 的值
- c# - Visual Studio 有时会在 PC 重新启动后重建未修改的项目
- javascript - 避免在第一次 ajax 调用完成之前通过 ajax 请求提交多个表单
- java - 为什么在while循环中等待条件?
- jquery - 获取数组 jquery 中单个 JSON 对象值的总和