- “ == ”代表比较双方是否相同。如果是基本类型则表示值相等,如果是表示引用类型则表示地址相等即是同一个对象。
equals()提供定义”对象内容是否相等“的逻辑,仅适用于引用数据类型。
其中Object中的equals方法的源码:
public boolean equals(Object obj) {
return (this == obj);
}
所以:Object类中定义的equals()和==的作用是相同的
package com.it.test;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;
public class Test {
public static void main(String[] args) {
Person s = new Person();
Person t = new Person();
System.out.println(s == t);
System.out.println(s.equals(t));
}
}
class Person {
String name;
int height;
public void rest() {
System.out.println("休息一下");
}
}
2. 像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容”(即属性)是否相同。
通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同。那么,我们就需要对Object类中的equals()进行重写。
★重写的原则:比较两个对象的实体内容是否相同。