A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙铭泽 中级黑马   /  2012-8-24 21:12  /  1521 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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不是指的同一个对象吗?

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1

查看全部评分

4 个回复

倒序浏览
this是指此方法的调用者,p是指传递进来需要进行比较的对象。程序中Person p = (Person)obj;语句就是将要比较的对象强制转换成Person实例对象。
回复 使用道具 举报
[Fly]楼上正解[/Fly]
回复 使用道具 举报
当调用方法时,必须有一个实体对象调用equals()方法,并导入一个对象。 比如:p1.equals(p2);
this就是指p1调用者,p就是指传递进来需要进行比较的对象p2。

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
this指调用者,而p是传进来的.
正如楼上那么兄弟所举例的那样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马