黑马程序员技术交流社区
标题:
equals 重写后 迷糊了
[打印本页]
作者:
孙铭泽
时间:
2012-8-24 21:12
标题:
equals 重写后 迷糊了
class Person{
private String name;
private int age;
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Person p = (Person)obj;
System.out.println(this.name+"..."+p.name); //这个this和p不是同一个吗?
return this.name.equals(p.name) && this.age==p.age;
}
}
一个集合中存Person对象的时候,判断他们名字和年龄是否相同的时候都会调用这个equals方法,它们中的this和p不都是指调用这个equals方法的Person对象吗?
为什么会写 System.out.println(this.name+"..."+p.name);
return this.name.equals(p.name) && this.age==p.age;
this和p不是指的同一个对象吗?
作者:
唐见
时间:
2012-8-24 21:31
this是指此方法的调用者,p是指传递进来需要进行比较的对象。程序中Person p = (Person)obj;语句就是将要比较的对象强制转换成Person实例对象。
作者:
唐杨老师
时间:
2012-8-24 23:49
[Fly]楼上正解[/Fly]
作者:
商秀川
时间:
2012-8-25 01:16
当调用方法时,必须有一个实体对象调用equals()方法,并导入一个对象。 比如:p1.equals(p2);
this就是指p1调用者,p就是指传递进来需要进行比较的对象p2。
作者:
王金科
时间:
2012-8-25 02:16
this指调用者,而p是传进来的.
正如楼上那么兄弟所举例的那样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2