【安卓学习笔记】JAVA基础Lesson5-关键字this
2017-08-26 13:30
429 查看
关键字this在JAVA这门语言当中扮演了非常重要的角色,在开发的过程中用的频率很高。
1、第一种用法
如下代码:
在很多时候其实我们会忽略一个问题,那就是
这行代码中的name没有对象。
按照标准的java写法,name应该是需要有它所属的对象的,其实在执行的过程中这个那么是有对象的,只是给省略了。
那么在这里其实这里是把this.name简写成了name了:
这个this就是对象。
至于这个this究竟是那个对象,在执行如下测试代码之后:
执行的结果如下:
其实从结果可以看出,当对象A执行的时候打印出来的是"A",对象B执行的时候打印出来的是"B",而产生这样的结果,也就是因为有这个this关键字。
这个this按照官方的说法来说,首先它是代表这个一个对象,这个被代表的对象调用这个fun函数的对象。
例如上述代码中的 :
简单总结就是:哪个对象调用fun()这个函数,这个this就代表着哪个对象。这跟现实生活中的“我”字很相像。
例如:
张三说:我的名字是张三;//那么这个“我”就代表张三
李四说:我的名字是李四;//那么这个“我”就代表李四
很好理解吧!
/******************************************************************************华丽分割线*******************************************************************************/
存在一种特殊情况与上述的冲突:
如:
上述的fun函数形参是name,而成员变量也是name,这个时候有两种情况:
System.out.println("my name is " + name);//此时这里的那么是传入的参数
System.out.println("my name is " + this.name");//此时这里的name是成员变量的name
/******************************************************************************华丽分割线*******************************************************************************/
2、第二种用法——方便成员变量的赋值
例如:
这样写可以很方便的清楚传入参数所对应的成员变量,同样this也可以用来调用本类里面的另外的构造函数。
如:
使用的方法是this(),其中传入的参数将会决定调用的是哪一个函数
如果是this();则调用的是
如果是this(A,B);则调用的是
在使用this调用本类当中其他的构造函数时应该注意:
1.对this的调用必须是构造函数的第一个语句
2.一个构造函数只能用一个this去调用其他的构造函数,即不能用两个this,有1也能推出来。
By Urien 2017年8月26日 13:33:23
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
相关文章推荐
- 【安卓学习笔记】JAVA基础Lesson6-关键字static
- 【安卓学习笔记】JAVA基础Lesson1-简介与变量
- 【安卓学习笔记】JAVA基础Lesson9-对象的转型
- 【安卓学习笔记】JAVA基础Lesson2-JDK安装与环境配置
- 【安卓学习笔记】JAVA基础Lesson7-继承
- 【安卓学习笔记】JAVA基础Lesson12-接口
- 【安卓学习笔记】JAVA基础Lesson3-面向对象和类
- 【安卓学习笔记】JAVA基础Lesson8-函数的复写与super用法
- 【安卓学习笔记】JAVA基础Lesson4-函数重载与构造函数
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.3关键字(4.3.4-4.3.6)
- Java学习笔记(18)--关键字this详解
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.3关键字(4.3.7-4.3.9)
- 【安卓学习笔记】JAVA基础Lesson10-抽象类和抽象函数
- [java学习笔记]java语言核心----面向对象之this关键字
- 【安卓学习笔记】JAVA基础练习1
- Java基础:this指针——学习笔记
- 【安卓学习笔记】JAVA基础-异常的处理
- Java学习笔记(3)——关键字this的使用
- [好程序员训练营]java基础笔记之static关键字的学习
- Java基础学习笔记 -- 3(变量、标识符、关键字)