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

© 周志伟 黑马帝   /  2013-4-4 03:53  /  2029 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周志伟 于 2013-4-4 16:25 编辑
  1. class Person
  2. {
  3.        private String name;
  4.        private int age;
  5.        Person(int age)
  6.        {
  7.               this.age = age;
  8.        }

  9.        Person(String name)
  10.        {
  11.               this.name = name;
  12.                     
  13.        }
  14.        Person(String name, int age)
  15.        {
  16.               this.name = name;
  17.               this.age = age;
  18.        }

  19.        public void speak()
  20.        {
  21.               System.out.println("name="+this.name+"...age="+this.age);
  22.               this.show();
  23.        }
  24.        public void show()
  25.        {
  26.               System.out.println(this.name);
  27.        }

  28.       

  29.        public boolean compare(Person p)
  30.        {
  31.               return this.age == p.age;////////////////////////这里看不太明白啊??????????????this.age和p.age不明白啊,他们分别表示的是哪个age   啊???????????????????????????????

  32.        }
  33. }

  34. class PersonDemo3
  35. {
  36.        public static void main(String[] args)
  37.        {
  38.               Person p1 = new Person(20);
  39.               Person p2 = new Person(25);
  40.       
  41.               boolean b = p1.compare(p2);
  42.               System.out.println(b);

  43.               //Person p = new Person("lisi");
  44.               //Person p1 = new Person("zhangsan");

  45.               //p.speak();
  46.               //p1.speak();
  47.        }
  48. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

15 个回复

倒序浏览
this.age表示的是p1的age.  p.age表示的是p2的age.这里就用到this关健字的作用。当它在方法中用来访问对象的属性时,this表示的是当前调用这个方法的对象.这里当然就是p1了。p1正在调用comrare方法。而p2是传入的实际参数。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 庞立森 于 2013-4-4 08:39 编辑

首先你要明白this的根本含义,this通俗的讲就是谁来使用就是谁,
在本代码中P1调用了compare方法,this.age就代表P1
compare()方法里面你输入的参数,就是你要比较的对象,
多以P.age代表的是compare()方法里面的参数p2.age
回复 使用道具 举报
this.出现在成员方法时是指调用这个方法或属性的对象,执行this.age == p.age。this指的就是p1, p.age就是传进来的实参的 age也就是你程序里的泡p2
回复 使用道具 举报
这个boolean型返回值的函数是比较年龄是否相同的功能。也就是比较是否是同龄人。哪个对象调用compare函数,this.age就是哪个对象中的堆内存中的age显示值。而p.age就是参与对比的类类型参数值。
回复 使用道具 举报
this变量代表对象的本身,当类中有两个同名变量,一个属于类的成员变量,另一个属于方法中的局部变量。区分它们两个就用this,this将被设置成该类的对象。所以this.变量就是该类的成员变量、、、、
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
public boolean compare(Person p){
           return this.age == p.age;
}
方法里的this代表的是正在调用该方法的对象。this.age表示调用此方法对象的age,p.age 表示传入的参数p的age。
回复 使用道具 举报
本帖最后由 耿文达 于 2013-4-4 10:07 编辑

this.age中的this是指当前调用compare方法的对象;而p.age是指作为参数引入该方法中的对象。
放在具体的代码中说明:
boolean b = p1.compare(p2);
p1是调用compare方法的对象,this指的就是p1;
p2是作为compare方法的参数传进来的对象,p指的就是p2
回复 使用道具 举报
影响力147753321 发表于 2013-4-4 07:20
this.age表示的是p1的age.  p.age表示的是p2的age.这里就用到this关健字的作用。当它在方法中用来访问对象 ...

晓得了,谢谢哈。就是说,this表示的是当前对象的age,而p.age表示的是p2的age,是这样的吗?
回复 使用道具 举报
寇弘禄 发表于 2013-4-4 09:36
public boolean compare(Person p){
           return this.age == p.age;
}

明白了。谢谢哈
回复 使用道具 举报
耿文达 发表于 2013-4-4 10:06
this.age中的this是指当前调用compare方法的对象;而p.age是指作为参数引入该方法中的对象。
放在具体的代 ...

恩,明白了,谢谢哈。
回复 使用道具 举报
杜加璇 发表于 2013-4-4 08:40
this.出现在成员方法时是指调用这个方法或属性的对象,执行this.age == p.age。this指的就是p1, p.age就是 ...

明白了。谢谢哈
回复 使用道具 举报
田磊阳 发表于 2013-4-4 09:33
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢 ...

我上夜班,白天睡觉,我只有起床之后才能回复,抱歉啊。
回复 使用道具 举报
周志伟 发表于 2013-4-4 16:26
我上夜班,白天睡觉,我只有起床之后才能回复,抱歉啊。

嗯嗯,没关系,只要不超过一星期就可以
回复 使用道具 举报
田磊阳 发表于 2013-4-4 21:37
嗯嗯,没关系,只要不超过一星期就可以

恩恩,好的,麻烦了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马