您的位置:首页 > 编程语言 > Java开发

【安卓学习笔记】JAVA基础Lesson5-关键字this

2017-08-26 13:30 429 查看
关键字this在JAVA这门语言当中扮演了非常重要的角色,在开发的过程中用的频率很高。

1、第一种用法

如下代码:
class Lesson5{
String name;
void fun(){
System.out.println("my name is " + name);
}
}


在很多时候其实我们会忽略一个问题,那就是

System.out.println("my name is " + name);


这行代码中的name没有对象。

按照标准的java写法,name应该是需要有它所属的对象的,其实在执行的过程中这个那么是有对象的,只是给省略了。

那么在这里其实这里是把this.name简写成了name了:

System.out.println("my name is "+ this.name);

这个this就是对象。

至于这个this究竟是那个对象,在执行如下测试代码之后:

class Test{
public static void main(String args []){

Lesson5 A = new Lesson5();
A.name = "A";

Lesson5 B = new Lesson5();
B.name = "B";

A.fun();
B.fun();
}
}


执行的结果如下:
D:\Android\src>javac Lesson5.java

D:\Android\src>javac Test.java

D:\Android\src>java Test
my name is A
my name is B

D:\Android\src>

其实从结果可以看出,当对象A执行的时候打印出来的是"A",对象B执行的时候打印出来的是"B",而产生这样的结果,也就是因为有这个this关键字。

这个this按照官方的说法来说,首先它是代表这个一个对象,这个被代表的对象调用这个fun函数的对象。

例如上述代码中的 :
A.fun();//这里执行fun()函数的时候这个this就代表着对象A
B.fun();//这里执行fun()函数的时候这个this就代表着对象B

简单总结就是:哪个对象调用fun()这个函数,这个this就代表着哪个对象。这跟现实生活中的“我”字很相像。

例如:

张三说:我的名字是张三;//那么这个“我”就代表张三

李四说:我的名字是李四;//那么这个“我”就代表李四

很好理解吧!

/******************************************************************************华丽分割线*******************************************************************************/

存在一种特殊情况与上述的冲突:

如:

class Lesson5{
String name;
void fun(String name){
System.out.println("my name is " + name);}
}


上述的fun函数形参是name,而成员变量也是name,这个时候有两种情况:

System.out.println("my name is " + name);//此时这里的那么是传入的参数
System.out.println("my name is " + this.name");//此时这里的name是成员变量的name

/******************************************************************************华丽分割线*******************************************************************************/

2、第二种用法——方便成员变量的赋值
例如:

class Lesson5(){
String A;
int B;
char C;

void fun(String A,int B,char C){
this.A = A;
this.B = B;
this.C = C;
}
}

这样写可以很方便的清楚传入参数所对应的成员变量,同样this也可以用来调用本类里面的另外的构造函数。

如:

class Lesson5(){
String A;
int B;
char C;

void fun(){

}

void fun(Sting A,int B){
this.A = A;
this.B = B;
}

void fun(String A,int B,char C){
this(A,B);
this.C = C;
}
}

使用的方法是this(),其中传入的参数将会决定调用的是哪一个函数

如果是this();则调用的是

void fun(){

}

如果是this(A,B);则调用的是

void fun(Sting A,int B){
this.A = A;
this.B = B;
}

在使用this调用本类当中其他的构造函数时应该注意:

1.对this的调用必须是构造函数的第一个语句

2.一个构造函数只能用一个this去调用其他的构造函数,即不能用两个this,有1也能推出来。

By Urien 2017年8月26日 13:33:23
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: