黑马程序员技术交流社区
标题: this用法 [打印本页]
作者: 小小武 时间: 2013-10-4 12:25
标题: this用法
看到第五天的基础视频,但是对this的用法了解还不是很深刻,希望哪个高手指点指点?
作者: 摄影勾魂 时间: 2013-10-4 12:51
this这个关键字是对象的默认引用。谁调用它所在的方法,它就指向谁。
作者: 黑马戴帅军 时间: 2013-10-4 13:13
本帖最后由 黑马戴帅军 于 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方法中使用!
作者: 麦子 时间: 2013-10-4 14:45
本帖最后由 麦子 于 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我
作者: 刘亮 时间: 2013-10-4 19:21
我的日记总结
★this关键字:用于区分局部变量和成员变量同名的情况。
this代表它所在函数所属对象的引用。
★this语句:用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行。因为初始化要要先执行。
作者: 风在飙 时间: 2013-10-5 00:03
this关键字有这么几点:
1、作用:在同一个类中可以区分局部变量和成员变量同名情况。
2、意义:this代表他所在函数所属对象的引用,毕老师讲得很明白,即那个对象在调用this所在函数,this就代表那个对象。
3、应用:定义类中的功能时,该函数内部要调用该函数的对象时,这时用this表示这个对象,但凡本类功能内部使用了本类对象,对象都用this来表示。
4、在语句中的用法:用于构造函数间相互调用,this语句必须定义在构造函数第一行,必须先初始化。
作者: 狼人→浪人 时间: 2013-10-5 09:26
或许自己想复杂了,“this代表当前对象”一句话总结吧。
class a{
int num=10;
public void method(){
this.num;//就是下面这个函数的调用者 new A(); 这个对象,也就是说this代表当前函数的调用者
}
}
A a=new A();
a.method();
一句话“this代表当前对象”把问题简单化。
作者: The_Wizard 时间: 2013-10-7 10:46
你可以参看《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(其他构造函数的参数列表) 可以指定调用本类的构造函数。
作者: 奋斗@zbt 时间: 2013-10-9 16:00
this其实是一个对象实例自身的引用,
也就是说:通过它在程序中可以访问对象实例自身
比如:this.abc可以访问实例自身的abc属性;
当让在类方法中你可以不使用this;但是建议你使用,这样当你的临时变量有同名时,可以很清楚的标明引用的是实例属性还是临时变量
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |