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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

小小武

中级黑马

  • 黑马币:0

  • 帖子:41

  • 精华:0

© 小小武 中级黑马   /  2013-10-4 12:25  /  1803 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到第五天的基础视频,但是对this的用法了解还不是很深刻,希望哪个高手指点指点?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

8 个回复

正序浏览
this其实是一个对象实例自身的引用,
也就是说:通过它在程序中可以访问对象实例自身
比如:this.abc可以访问实例自身的abc属性;
当让在类方法中你可以不使用this;但是建议你使用,这样当你的临时变量有同名时,可以很清楚的标明引用的是实例属性还是临时变量

评分

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

查看全部评分

回复 使用道具 举报
你可以参看《java编程思想》第84页:5.4 this关键字。
    使用 this 是为了能更简便的编写代码:你所写的代码经过编译时,编译器会做一些幕后工作——把“所操作对象的引用”作为第一个参数传递给该对象调用的方法。例如,
(Person类的编写这里省了!)
Person p = new Person("zhangsan", 24);
String name = p.getName();。其实 p.getName(); 的内部表示形式是 Person.getName(p); 。当然我们不能这样写,并试图通过编译。由于这个引用(p)是由编译器传入的,所以没有标识符。为此用了 this,用它表示对“调用方法的那个对象”的引用。注意 静态方法,静态方法没有 this。这也是静态方法与非静态方法的根本区别。
另外在构造函数中通过 this(其他构造函数的参数列表) 可以指定调用本类的构造函数。

评分

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

查看全部评分

回复 使用道具 举报
或许自己想复杂了,“this代表当前对象”一句话总结吧。
class a{
int num=10;
public void method(){
this.num;//就是下面这个函数的调用者 new A(); 这个对象,也就是说this代表当前函数的调用者
}
}

A a=new A();
a.method();

一句话“this代表当前对象”把问题简单化。

评分

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

查看全部评分

回复 使用道具 举报
this关键字有这么几点:
1、作用:在同一个类中可以区分局部变量和成员变量同名情况。
2、意义:this代表他所在函数所属对象的引用,毕老师讲得很明白,即那个对象在调用this所在函数,this就代表那个对象。
3、应用:定义类中的功能时,该函数内部要调用该函数的对象时,这时用this表示这个对象,但凡本类功能内部使用了本类对象,对象都用this来表示。
4、在语句中的用法:用于构造函数间相互调用,this语句必须定义在构造函数第一行,必须先初始化。

评分

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

查看全部评分

回复 使用道具 举报
我的日记总结
★this关键字:用于区分局部变量和成员变量同名的情况。
  this代表它所在函数所属对象的引用。
★this语句:用于构造函数之间进行互相调用。
  this语句只能定义在构造函数的第一行。因为初始化要要先执行。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 麦子 于 2013-10-4 14:47 编辑

妹纸给你普及下这些小知识点,要掌握好哦

this:就是代表本类的对象及代表它所在函数所属对象的引用,
并可以用于构造函数之间进行互相调用,示例:
class  xxx
{
     private  int  a;
     private  String  b;
     xxx(int a)
    {   this.a = a;  }
    xxx(int a,String b)
    {  this(a);
        this.b = b;         
    }

与之对应的还有个关键字super
super()   用于子类构造函数中时,会访问父类空参数的构造函数,(其实子类中所有的构造函数的第一行都有个默认的构造函数super() )
如果要访问父类中制定某个构造函数,可形如super(int a,String b,Person p1),即在super 的参数列表中加入要调用的父类构造函数对应的参数列表的数据

还需要注意的是这两个关键字都只能用在构造函数的第一行(很明显,用了一个另外一个就不能用了,因为它不是该构造函数的第一条语句)

不知道我的解释,你是否能懂,不懂可以M我

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 黑马戴帅军 于 2013-10-4 13:17 编辑

public class persion{

  private String name=null;
  private int age;

  public void setName(String name){
      this.name=name;
}
  public String getName(){

   return name;
}

}

在这个类中setName方法中第一个变量用this是为了和本方法的参数this做区别,表示这个name指的是Person这个类的name属性,而不是name参数,如果去掉这个this,执行完这个方法后,Person类的name属性仍然为null
getName方法返回的Person类的name,之所以不用this是因为没有必要,因为编译器会知道这个name就指的是Person的name而不是其他的name(因为找个方法没有name变量和它混淆)。当然,这个方法你也可以显示的使用return this.name。





this的具体用法。
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!




评分

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

查看全部评分

回复 使用道具 举报
this这个关键字是对象的默认引用。谁调用它所在的方法,它就指向谁。

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马