重写java中Object的equals方法
预备知识
equals方法:如果是基本类型,比较值;如果不是基本类型,比较地址,String中重写了equals方法,比较的是两个字符串里面的内容是否相等。
目的
实现一个Test1类,使用equals比较两个Test1实例里面的值是否相等
代码
- Test1代码,重写equals方法,比较两个实例对象里面的值是否相等
/**
* 重写Object类里面的equals方法
*/
public class Test1{
private String name;
private int age;
public Test1(){}
public Test1(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(this == obj) return true;
if(obj instanceof Test1) {
Test1 test = (Test1) obj;
return this.name == ((Test1) obj).name && this.age == ((Test1) obj).age;
}
return false;
}
}
- Test2代码,不重写equals方法
public class Test2 {
private String name;
private int age;
public Test2(String name, int age) {
this.name = name;
this.age = age;
}
}
- Test代码,测试结果
public class Test {
public static void main(String[] args) {
Test1 test11 = new Test1("t", 10);
Test1 test12 = new Test1("t", 10);
Test2 test21 = new Test2("e", 66);
Test2 test22 = new Test2("e", 66);
System.out.println(test11.equals(test12));
System.out.println(test21.equals(test22));
}
}
运行结果
总结
在日常的开发中,可以通过重写equals方法,来完成自定义比较规则