this关键字的作用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
this 关键字的作用
this 关键字的作用
this 关键字的用法
1.this 是指当前对象自己。
当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this 引用。
如下面这个例子中: 矚慫润厲钐瘗睞
枥庑赖賃軔朧。
public class Hello {
String s =
public Hello(String s)
{
System.out.println(
System.out.println(
this.s = s;
System.out.println(
}
public static void main(String[] args) {
Hello x=
}
}
运行结果:
s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
在这个例子中, 构造函数Hello 中,参数s 与类Hello 的变量s 同名, 这时如果直接对s 进行操作则是对参数s 进行操作。
若要对类Hello 的成员变量s 进行操作就应该用this 进行引用。
运行结果的第一行就是直接对构造函数中传递过来的参数s 进行打印结果; 第二行是对成员变量s 的打印; 第三行是先对成员变量s 赋传过来的参数s 值后再打印,所以结果是HelloWorld! 聞創沟燴鐺險爱氇谴净祸測樅。
2.把this 作为参数传递当你要把自己作为参数传递给别的对象时,也可以用this 。
如: public class A {
public A() {
new B(this).print();
}
public void print() {
System.out.println(
}
}
public class B {
A a;
public B(A a) {
this.a = a;
}
public void print() {
a.print();
System.out.println(
}
}
运行结果:
Hello from A!
Hello from B!
在这个例子中,对象 A 的构造函数中, 用new B(this) 把对象 A 自己作为参数传递给了对象 B 的构造函数。
残骛楼諍锩瀨濟溆塹籟婭骒東。
3.注意匿名类和内部类中的中的this 。
有时候,我们会用到一些内部类和匿名类,如事件处理。
当在匿? 嘀杏胻his 时,这个this 则指的是匿名类或内部类本身。
这时如果我们要使用外部类的方法和变量的话, 则应该加上外部类的类名。
如下面这个例子:酽锕极額閉镇桧猪訣锥顧荭钯。
public class A {
int i = 1;
public A() {
Thread thread = new Thread() {
public void run() {
for(;;) {
A.this.run();
try {
sleep(1000);
} catch(InterruptedException ie) { }
}
}
}; // 注意这里有;
thread.start();
}
public void run() {
System.out.println(
i++;
}
public static void main(String[] args) throws Exception { 彈贸摄尔霁毙攬砖卤庑诒尔肤。
new A();
}
}
在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的run 函数里用到了外部类的run 函数。
这时由于函数同名,直接调用就不行了。
这时有两种办法,一种就是把外部的run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。
那么就可以用这个例子中的办法用外部类的类名加上this 引用来说明要调用的是外部类的方法run 。
謀荞抟箧飆鐸怼类蒋薔點鉍杂。
4.在构造函数中,通过this 可以调用同一class 中别的构造函数,如public class Flower{
Flower (int petals){}
Flower(String ss){}
Flower(int petals, Sting ss){
//petals++; 调用另一个构造函数的语句必须在最起始的位置
this(petals);
//this(ss); 会产生错误,因为在一个构造函数中只能调用一个构造函数}
}
值得注意的是:
1:在构造调用另一个构造函数,调用动作必须置于最起始的位置2:不能
在构造函数以外的任何函数内调用构造函数。
3:在一个构造函数内只能调用一个构造函数。