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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 張帅 中级黑马   /  2013-9-18 08:31  /  1951 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 張帅 于 2013-9-20 11:17 编辑

class Person
{
        private String name;
        private int age;
        Person(int age)
        {
                this.age = age;//对年龄进行初始化
        }

public boolean compare(Person p)
{
   return this.age==p.age;//问题: 此处的this.age 是 p1的age还是p2的age啊?。。是不是谁在调用这个比较对象谁就是this(即p1是),还是this是传入进来的p2的年龄,也就是说this是本对象的p2的age与调用本对象的p1的age作比较??谢谢
}
}

class TestDemo
{
        public static void main(String[] args)
        {
                Person p1 = new Person(21);
                Person p2= new Person(22);
                boolean b = p1.compare(p2);
                System.out.println(b);
        }
}

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

8 个回复

倒序浏览
谁调用这个方法,this就是谁
回复 使用道具 举报
你要使用person类中的方法就要创建对象吧,那个对象调用这个方法。this便指那个对象
回复 使用道具 举报
这里的this是指对象调用的age,p.age是指被比较对象的age
回复 使用道具 举报
P1调用这个函数时,p1就是this
p2调用函数时,p2就是this
哪个对象调用这个函数,this就代表哪个。
回复 使用道具 举报
这里的this指的是调用compare(Person p)方法对象,p为形参指的是该方法传入的Person对象。
回复 使用道具 举报
在你compare方法的基础上加上一句打印代码,如下:

public boolean compare(Person p)
{
/*加上下面这段代码,运行!所以P1调用此方法,this就是P1;P2调用此方法,this就是P2.*/
System.out.println("this(当前对象:即这个方法的调用者)的年龄:"+this.age+"\t对象p年龄:"+p.age);
   return this.age==p.age;//此处的this表示 调用compare方法的person对象!
}
问题解决!

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
this可以看成调用其所属方法的对象的另外一个称呼。就好像张三(对象)使用了这把尺子(方法),也可说为这个人(this)使用了这把尺子(方法)。
Person p1 = new Person(21);//p1新建对象后,传入了参数,调用了Person这个对象的构造方法                      Person(int age){},this.age=age,this可以看成是一个调用对象p1的另外一个称呼,this.age其实是调用对象p1在调用其年龄属性,而等号右面的age,就是p1新建对象时传入的参数。
Person p2= new Person(22);//p2也做了同样的事。
boolean b = p1.compare(p2);//在这里,等号的右边,p1然后一点,那么就是p1在调用自己新建对象后的compare方法,而它的这个方法需要传一个对象进去,所以p2就是要传进去的实际参数,p = p2,而p1是调用方法的对象,所以这个对象代表了this,this = p1, return后面的语句就是两个对象分别调用自己的年龄属性然后进行比较。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
楼主,你好!
如果您的问题解决了,请把您问题的未解决更改为已解决
谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马