//如何比较p1与P2是同一个人?用equlas重写
Person p1 = new Person("1001","刘德福");
Person p2 = new Person("1001","刘德华"); class Person{
private String idCard;
public String name;
public Person(String idCard,String name){
this.idCard = idCard;
this.name = name;
}
}
调试欢乐多
class Person {
private String idCard;
public String name; public Person(String idCard, String name) { this.idCard = idCard;
this.name = name;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (idCard == null) {
if (other.idCard != null)
return false;
} else if (!idCard.equals(other.idCard))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
} public static void main(String[] args) {
Person p1 = new Person("1001", "刘德福");
Person p2 = new Person("1001", "刘德华");
System.out.println(p1.equals(p2));
;
}
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((idCard == null) ? 0 : idCard.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
FileTest other = (FileTest) obj;
if (idCard == null) {
if (other.idCard != null)
return false;
} else if (!idCard.equals(other.idCard))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
加入上面代码,直接打印p1.equals(p2)
public class Person {
private String idCard;
public String name; Person(String idCard, String name)
{ this.idCard = idCard;
this.name = name;
} public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((idCard == null) ? 0 : idCard.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (idCard == null) {
if (other.idCard != null)
return false;
} else if (!idCard.equals(other.idCard))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
} public static void main(String[] args)
{
Person p1 = new Person("1001", "刘德福");
Person p2 = new Person("1001", "刘德华");
System.out.println(p1.equals(p2));
}
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Person){
Person p = (Person)obj;
if(p.getIdCard().equals(this.getIdCard()))//身份证号是唯一的
return true;
}
return false;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}
// 重写父类Object的equals方法 @Override
public boolean equals(Object obj) {
if(obj==null){
return false;
} // 首先如果是引用地址相同,那么返回ture
if (this == obj) { return true;
}
// 如果比较对象不是同一类型那么返回false if (!(obj instanceof Person)) { return false;
}
// 强制类型转换:只能发生在拥有继承关系的多态中
Person p = (Person) obj;
if(p.idCard.equals(this.idCard)){
return true;
} return false;
}
//重写hashCode
@Override
public int hashCode() {
return Integer.parseInt(idCard);
}
public static void main(String[] args){
System.out.println("p1.equals(p2)"+(p1.equals(p2)));