代码如下:
public class TestOverquals
{
public static void main(String args[])
{
TestPerson1 p11 = new TestPerson1("张三",25);
TestPerson1 p12 = new TestPerson1("张三",25);
System.out.println(p11.equals(p12)?"是同一个人":"不是同一个人");
}
}
class TestPerson1
{
private String name;
private int age;
public TestPerson1(String name ,int age)
{
this.name = name;
this.age = age;
}
public boolean equals(Object o)
{
boolean temp = true;
TestPerson1 p1 = this;
if(o instanceof TestPerson1)
{
TestPerson1 p2 = (TestPerson1)o;
if(!(p1.name.equals(p2.name)&&p1.age==p2.age)) //这里看不懂,首先equals方法比较的是2个对象,他俩的name属性也可以比较吗?而且这里调
// 用的是没有赋写的object类的equals方法,那么他俩的内存地址值肯定是不同的。应该是false,然后取反 不就是true了么?true了就执行下一条语句,不就是
//否了么。。绕晕了。。。真心迷糊了。。。。
{
temp = false;
}
}
else
{
temp =false;
}
return temp;
}
}
|