首先我们运行以下代码,比较两个对象是否相等。可以看出,两个person明明完全相等,但是结果却是false,这是因为person1与person2是两个对象,虽然包含内容相等,但是equals的源码将两个不同的对象直接处理为不相等。这个时候我们可以选择重写equals代码,完成我们的需求。
package com.zss.Mlearn;
public class A {
public static void main(String[] args) {
Person person1=new Person("mary",20,'男');
Person person2=new Person("mary",20,'男');
System.out.println(person1.equals(person2));
}
}
class Person{
private String name;
private int age;
private char gender;
public Person(String name,int age,char gender){
this.name=name;
this.age=age;
this.gender=gender;
}
/*@Override
public boolean equals(Object obj) {
if (this==obj){
return true;
}
if (obj instanceof Person){
//需要得到他的各个属性
Person p= (Person)obj;
return this.name.equals(p.name)&&this.age==p.age&&this.gender== p.gender;
}
return false;
}*/
}
上述将注释容取消注释,这样就可以实现这个效果。将传入的obj对象强制转为为person对象,进而比交他们的值。