黑马程序员技术交流社区

标题: 大家帮个忙解释一下java 中this的意思是 [打印本页]

作者: 1198914316    时间: 2014-10-16 20:04
标题: 大家帮个忙解释一下java 中this的意思是
各位同学,我是一个新手大家帮我解释一下Java中this意思,看了好久就是不理解,有点乱,谢谢。
作者: 朴日男    时间: 2014-10-16 20:36
  1. public class Temp
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Person p = new Person("项羽", 2246);
  6.                 p.speak();
  7.         }
  8. }
  9. class Person
  10. {
  11.         private String name;
  12.         private int age;
  13.         Person(String name, int age)
  14.         {
  15.                 this.name = name;
  16.                 this.age = age;
  17.         }
  18.         public void speak()
  19.         {
  20.                 System.out.println("我叫" + this.name + ",今年 " + this.age + "岁");
  21.         }
  22. }
复制代码

把this, 想象成p 就行了, 这个例子中, 把 this 替换想象成 p . 那就成了 p.name ,  p.age 这样好理解吧?
作者: 夜半风    时间: 2014-10-16 20:37
哪个对象调用那么this代表就是哪个对象
作者: 奋斗的小孩    时间: 2014-10-16 20:56
this代表的是对象,也就是调用该函数的对象。
简单的说就是:哪个对象调用这个this所在的函数,这个this就代表哪个对象。
作者: mjwp_cool    时间: 2014-10-16 23:37
楼上说的对,this代表本类对象。就是调用者
作者: T-l-H、小生    时间: 2014-10-17 00:04
this关键字:用于区分局部变量和成员变量同名的情况
this代表类的对象,代表它所在方法所属对象的引用,那个对象在调用this所在的方法,this就代表那个对象

作者: nerveva2000    时间: 2014-10-17 02:06
this顾名思义,就是中文的”这“,this。后面跟随的变量或者方法,其含义,就调用this的这个类 或者方法。
作者: nerveva2000    时间: 2014-10-17 02:11
this:代表一个本类对象的引用。
super:代表一个父类空间。
  1. class Fu
  2. {
  3.         private int num = 4;
  4.         public int getNum()
  5.         {
  6.                 return num;
  7.         }
  8. }

  9. class Zi extends Fu
  10. {
  11.         private int num = 5;
  12.         void show()
  13.         {
  14.                 System.out.println(this.num+"....."+super.getNum());
  15.                 //输出结果为 5.....4
  16.                 //可以看出,this.num  指的是本类的中5
  17.         }
  18. }

  19. class ExtendsDemo2
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 Zi z = new Zi();
  24.                 z.show();
  25.         }
  26. }
复制代码

作者: 1198914316    时间: 2014-10-17 08:22
朴日男 发表于 2014-10-16 20:36
把this, 想象成p 就行了, 这个例子中, 把 this 替换想象成 p . 那就成了 p.name ,  p.age 这样好理解吧? ...

谢谢,您的帮忙。
作者: 情天不雨    时间: 2014-10-17 11:09
1198914316 发表于 2014-10-17 08:22
谢谢,您的帮忙。

简单点,就是代表类自己,如果是成员变量,代表类自己的成员变量,方法代表自己的成员方法,和super在一起比较容易理解些的
作者: 齐宁宁    时间: 2014-10-17 12:16
this表示调用当前方法的当前对象
作者: new999    时间: 2014-10-17 12:23
坚持到底
作者: treanow    时间: 2014-10-17 12:53
朴日男 发表于 2014-10-16 20:36
把this, 想象成p 就行了, 这个例子中, 把 this 替换想象成 p . 那就成了 p.name ,  p.age 这样好理解吧? ...

百度了一下,确实是2246岁。。。
作者: treanow    时间: 2014-10-17 13:05
朴日男 发表于 2014-10-16 20:36
把this, 想象成p 就行了, 这个例子中, 把 this 替换想象成 p . 那就成了 p.name ,  p.age 这样好理解吧? ...

请问你这个代码中
class Temp(有主函数)和class Person  都是类,this出现在了class Person中,能出现在有主函数的类中吗
作者: 任献东    时间: 2014-10-17 13:17
this就表示当前的对象  哪个对象调用的包含this的方法   this就代表哪个对象
作者: run_wind    时间: 2014-10-17 19:54
情天不雨 发表于 2014-10-17 11:09
简单点,就是代表类自己,如果是成员变量,代表类自己的成员变量,方法代表自己的成员方法,和super在一 ...

我觉的this和super一起,才容易混淆
作者: 情天不雨    时间: 2014-10-17 20:59
run_wind 发表于 2014-10-17 19:54
我觉的this和super一起,才容易混淆

不是吧,你啊,super指调用父类的,this是自己的,呵呵,慢慢来吧。。。
作者: chen578157939    时间: 2014-10-18 11:26
表示当前函数所在类的实力对象
作者: zd12345    时间: 2014-10-18 15:06
this就代表本类对象
作者: 曾勇    时间: 2014-10-18 20:57
本帖最后由 曾勇 于 2014-10-18 21:02 编辑

this 只能调用本类中的成员函数和成员变量,调用成员变量时用: this.成员变量 ;调用成员函数时用: this.成员函数();

作者: 如梭的日月    时间: 2014-10-21 21:56
对你new出来的该对象进行的操作
作者: 皮三藏    时间: 2014-10-22 21:44
this就是代表当前对象,目前的Java中有三种使用this的地方,分别是 this.xx  XXX(this)  this(xxx)
第一种后面的XX可以是当前对象的全局变量和方法,第二种是在一个方法或同步块中传入一个当前对象,举个例子,锁住当前对象:synchronized(this),第三种,当一个类的构造方法需要调用这个类的其他构造方法时使用。
作者: chen578157939    时间: 2014-10-22 22:07
首先,this代表的是对象。那个对象?那个对象在调用this所在函数,就是那个对象。楼主首先要明白类与对象的概念
作者: OnlyStyle    时间: 2014-10-27 23:53
this所在方法所在的那个对象,不知道说明白没有。




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