Java下的Object类中的equals 方法: equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,不区分大小写。
而"=="用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true ,而在比较引用时,如果引用指向内存中的同一对象,结果为true. Object下的Eauals原始方法: public boolean equals(Object obj) {
return (this == obj);
}
我们通常自定义的对象,需要重写Equals方法,比较的结果才会为真!
class Person
{
private String name;
private int age;
public Person(String name, int age)
{
this.name = name ;
this.age = age ;
}
public void show()
{
System.out.println(name + ", " + age);
}
public boolean equals (Object obj)
{
if(!(obj instanceof Person)) //如果不是Person类型,直接返回false
return false;
//this是p1 ,obj是p2
Person p = (Person)obj; s //由于访问person特有的成员,需要把obj装换成person类.
//if(this.name != p.name)
if(this.name == null)
{
if (p.name != null) //比较名字
return false;
}
else if(!this.name.equals(p.name))
return false;
if (this.age != p.age)
return false;
return true;
//return (this = obj);
}
}
|