equals不同于==
只能判断引用类型
这里是Object类里面的equals方法
判断this和你输入的对象地址是否相同(是不是同一个对象)
常用的String里面的重写
用法为
字符串变量/字符串.equals(字符串变量/字符串)
如果字符串里的内容相同返回true,不同返回false
这里是源代码
分析一下
public boolean equals(Object anObject) {
if (this == anObject)//如果指向的是同一个对象返回true
{
return true;
}
if (anObject instanceof String) //如果是字符串或者其子类
{
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length)//如果两个字符串长度相同,一个个比较
{
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
同样的int可以用Integer类来进行判断
题目
public boolean equals(Object j){
if(this==j)//同一个对象直接反
return true;
if(j instanceof Person)//是Person我们才比较
{ Person a=(Person)j;
if(a.name.equals(this.name)&&a.age==this.age&&a.gender==this.gender)
return true;
}
return false;//不是Person返回false
}
}