目录
如何重写equals方法
应用实例: 判断两个Pig对象的内容是否相等,如果两个Pig对象的各个属性都一样,则返回true,反之false.
1. Pig类没有重写equals方法时,默认调用的是Object的equals方法,则默认判断两个pig地址是否相等。
2. Pig类重写equals方法之后,则调用自己的equals方法, 判断两个Pig的属性是否一致。
如何重写equals方法, 思路:
1. 如果object1地址==object2地址,则完全一致,返回true.
2. 如果object2是object1的同类型或者子类型,则判断他们的属性值是否相等。
Pig实体类
package org.example.object_;
import java.util.Objects;
/**
* author 大力pig
*/
public class Pig {
private String name;
private int age;
private char gender;
public Pig(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public Pig() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Pig pig = (Pig) o;
return age == pig.age && gender == pig.gender && Objects.equals(name, pig.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age, gender);
}
}
测试方法
在Pig实体类中,已经重写了equals方法,所以我们在判断pig1.equals(pig2)的时候会返回true.
1. pig1.equals(pig2)= true , equals重写。
2. pig.equals(pig2)= false, equals没有重写,默认调用Object的equals方法。
package org.example.object_;
/**
* author 大力pig
*/
public class PigMain {
public static void main(String[] args) {
Pig pig1 = new Pig("pig1", 10, '女');
Pig pig2 = new Pig("pig1", 10, '女');
System.out.println(pig1.equals(pig2)); //此时true
}
}