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

关键字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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值