==和 equals 的区别?

==和 equals 的区别?
== : 用于判断两个对象的地址是否相等,即判断两个对象是否为同一个对象。对于基本数据类型,== 比较的是它们的值;对于引用数据类型,== 比较的是它们在内存中的地址。
equals() : 用于判断两个对象是否相等。它通常有两种情况:
- 默认情况:如果一个类没有覆盖(重写)equals()方法,那么它会继承自Object类的equals()方法。在这种情况下,使用equals()方法进行比较等同于使用==进行比较,即比较对象的内存地址。
- 自定义情况:如果一个类覆盖了equals()方法,通常是为了比较对象的内容是否相同,即自定义了相等的标准。比如对于Person类,我们可能认为当两个人的编号和姓名相同的时候,它们就是同一个人。
举个例子,对于Person类的自定义equals()方法,我们可以根据编号和姓名来判断两个人是否相等。
public class Person {
private String no;
private String name;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return Objects.equals(no, person.no) &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(no, name);
}
}