黑马程序员技术交流社区

标题: this语句的咨询!! [打印本页]

作者: 涐扪①起奮乧    时间: 2013-10-9 17:29
标题: this语句的咨询!!
  1. class person
  2. {
  3.         private String name;
  4.         person(int age)
  5.         {
  6.                 this.age=age;
  7.         }
  8.         private int age;
  9. person(String name)
  10.         {
  11.                 //name=name;//这两个name都是局部里面的name,不是把局部里面的name赋给成员变量里的name
  12.                 this.name=name;//用于局部变量和成员变量同名的情况。
  13.         }
  14. person(String n,int a)
  15.         {
  16.                 name=n;
  17.                 age=a;
  18.         }
  19. public void speak()
  20.         {
  21.                 System.out.println("name="+this.name+".....age="+this.age);//里面的this可以省略
  22.                 this.show();//this.可以省略
  23.         }
  24.         public void show()
  25.         {
  26.                 System.out.println(this.name);
  27.         }
  28.         /*
  29.         需求:给人定义一个用于比较年龄是否相同的功能,也就是是否同龄人
  30.         */
  31.         public boolean compare(person p)
  32.         {
  33.                 return this.age==p.age;//这里面的this指的是p4的age,因为是p4调用的对象,
  34.         }
  35. }
  36. class PersonTest08
  37. {
  38.         public static void main(String[] args)
  39.         {
  40.                 person p4=new person(20);
  41.                 person p5=new person(25);
  42.                 boolean b=p4.compare(p5);
  43.                 System.out.println(b);
  44.     }
  45. }
复制代码
请问this()调用的时候,为什么不写成this.()比如说this.show();里面都带.知道的请告知一下。非常感谢
作者: 乔兵    时间: 2013-10-9 17:42
你指的是不能省略show吗?
作者: To    时间: 2013-10-9 17:44
请楼主把需要解决的问题说清楚。
作者: 张宏祚    时间: 2013-10-9 18:59
没有理解楼主问的意思,因为楼主的代码里,就是通过this.show()来代替person.show()的啊。
我对于this的理解就是:加入A对象调用了show()方法,那么this就可以看成是A对象。
楼主的代码里,show()是person类里面的方法,所以在调用的时候,this.show()必然指代的是person这个类。
如果不用this.show()这个形式的话,我就不知道还有什么语法可以达到相同的效果了?
我觉得是不是楼主对于this关键字的写法有一些不清楚的地方?咱们可以继续交流,进步!{:soso_e100:}
作者: 简单ai...    时间: 2013-10-9 19:02
楼主的说的问题好晕,
this主要要三种用法:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
作者: 涐扪①起奮乧    时间: 2013-10-10 09:57
乔兵 发表于 2013-10-9 17:42
你指的是不能省略show吗?

我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
作者: 涐扪①起奮乧    时间: 2013-10-10 09:58
仇邓强 发表于 2013-10-9 17:44
请楼主把需要解决的问题说清楚。

我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
作者: 涐扪①起奮乧    时间: 2013-10-10 10:04
简单ai... 发表于 2013-10-9 19:02
楼主的说的问题好晕,
this主要要三种用法:
1、表示对当前对象的引用!

可能当时没写清楚,我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
而调用show方法时却用this.show();这个.是为了用于隔开this和show()还是.show()第一体的?
作者: 涐扪①起奮乧    时间: 2013-10-10 10:05
张宏祚 发表于 2013-10-9 18:59
没有理解楼主问的意思,因为楼主的代码里,就是通过this.show()来代替person.show()的啊。
我对于this的理 ...

可能当时没写清楚,我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
而调用show方法时却用this.show();这个.是为了用于隔开this和show()还是.show()第一体的?
作者: 涐扪①起奮乧    时间: 2013-10-10 10:06
仇邓强 发表于 2013-10-9 17:44
请楼主把需要解决的问题说清楚。

可能当时没写清楚,我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
而调用show方法时却用this.show();这个.是为了用于隔开this和show()还是.show()第一体的?
作者: 涐扪①起奮乧    时间: 2013-10-10 10:06
仇邓强 发表于 2013-10-9 17:44
请楼主把需要解决的问题说清楚。

可能当时没写清楚,我指的是this();调用空参数的时候为啥不写成this.();比如说:
person()
{

}
这是一个空参数。
而调用show方法时却用this.show();这个.是为了用于隔开this和show()还是.show()第一体的?
作者: To    时间: 2013-10-10 10:52
本帖最后由 To 于 2015-7-1 22:27 编辑

的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: 睡不够的猪    时间: 2013-10-10 12:42
this指的是一个对象 对象调用方法或者变量时 用this.
而不是指的类名 所以构造函数不能用this() 必须写  类名()
作者: 涐扪①起奮乧    时间: 2013-10-10 16:24
睡不够的猪 发表于 2013-10-10 12:42
this指的是一个对象 对象调用方法或者变量时 用this.
而不是指的类名 所以构造函数不能用this() 必须写   ...

哦,谢谢
作者: 卑微の小幸福    时间: 2013-10-11 01:06
this是在本类中,this可以看做是一个变量,它的值是当前对象的引用,去调用方法。而在:person(){}时,是构造函数,不能用this..........




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2