简述
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
主要用于以下方面:
- this表示调用者(对象),在方法内使用成员变量时候
- 调用用类中的其他方法(编译器自动添加)
- 用构造器调用其他构造器
示例
1.没有this情况下,如何调用同类中的方法?
class A
{
public void run()
{
System.out.println("调用run");
}
public void jump()
{
//不用this指针怎么调用方法run()?
//另外创建对象,再用对象调用方法
A temp=new A();
temp.run();
System.out.println("调用jump");
}
}
public class ThisTest
{
public static void main(String[] agrs)
{
//用this指针与不用this指针的对比
A one=new A();
one.jump();//一共创建了2个对象,一个在main里面,一个在调用jump时候。
}
/*输出:
调用run
调用jump
*/
}
2.用This指针
class A
{
public void run()
{
System.out.println("调用run");
}
public void jump()
{
//用this指针
this.run();
//一般直接省略 this.
run();
System.out.println("调用jump");
}
}
3.当局部变量和Field同名时候采用this指针
class A
{
private int number;
private String name;
public void set(int number,String name)
{
number=number;//在同名情况下用This指针,假如不用也可用编译通过,但是没有达到赋值效果
name=name;//这样赋值,number,name都为默认初始值 0和null
this.number=number;//这样编译器能知道给字段赋值
this.name=name;
}
public void show()
{
System.out.println("number: "+number);//自动用this指针标识,this代表调用对象的空间
System.out.println("name: "+name);//同样自动用this标识
}
}
public class ThisTest
{
public static void main(String[] agrs)
{
//用this指针与不用this指针的对比
A one=new A();
one.set(123,"yg");//传值过去时候自动标识对象
A sec=new A();
sec.set(456,"gg");
one.show();
sec.show();
}
/*输出:
number: 123
name: yg
number: 456
name: gg
*/
}
4.用This修改构造函数
//用this指针修改构造函数,增强函数可读性
A(int number,String name){
this.number=number;
this.name=name;
}
5.This应用于多个构造函数
A(){}
A(int number,String name){
this.number=number;
this.name=name;
System.out.println(" 调用2个参数构造函数");
}
A(int number,String name,String address){
this(number,name);//直接调用第二个构造函数,消除了重复代码
this.address=address;
System.out.println("调用3个参数构造函数");
}
结果:
调用2个参数构造函数
调用3个参数构造函数
number: 123
name: yg
作者:YangGan出处:http://blog.csdn.net/incyanggan本文基于署名
2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).
分享到:
相关推荐
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建.rar
20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建.pdf
java笔记-从菜鸟到j2se j2ee高手之路
股市菜鸟必读----“笑傲股市”学习笔记.pdf
JAVA入门级笔记,满满当当适合刚学习用JAVA编程的程序员,不死记硬背靠理解走遍天下
菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的
java菜鸟学习第一步-java基础语法,学习一门语言先从语法开始学起,学好基础才能深入的学习编程
本人刚接触C#,练练手做了个小程序,美化效果比较差,对刚学OO思想想俺一样的菜鸟或许有那么点帮助,希望大家多多指教
Python基础语法-菜鸟教程-函数⽤法:input()和raw_input() 1.input()和raw_input()⽤法 (1).input() 1)⽤法解释 def input(*args, **kwargs): # real signature unknown """ Read a string from standard input....
java必备-菜鸟的最爱-正则表达式.docx
STM32菜鸟学习手册-罗嗦版 。
1 09:15:01 ------>Power:99% ----->Memory:18.24% ---->CPULoad:2.54 2 09:20:01 92% 17.86% 1.06 3 09:25:02 95% 18.58% 1.40 4 09:30:01 80% 19.04% 0.41 5 09:35:01 79% 19.18% 0.73 6 09:40:01 69% 19.13% 0.14...
菜鸟的SAP自学学习笔记;对SAP初学者很有帮助喔!为了解决问题却也带来了相当大的收益,接触了那些以前不会考虑的问题领域,结识了一些之前根本想象不到的人,这些都是那么重珍贵。
这本笔记主要记录了我之前面试遇到的问题以及我在网上整理的一些资料 主要是面向 junior 级别的 就是我们这些小菜鸟啦 ~ ---------------------------------------------------- 本 PDF 基于开源文档,目录书签齐全...
Java基础知识笔记详细版-菜鸟翻阅必备,可以作为坐地铁等公交的读物!
python-note 菜鸟学习笔记
java 笔试面试题 Java 面试笔记 这本书其实是我的一本笔记 (还在整理中). 我是也是刚找到工作. 这本笔记主要记录了我之前面试遇到的问题以及我在网上整理的一些资料 主要是面向 junior 级别的 就是我们这些小菜鸟啦 ...
DAMA学习笔记-第01-17章细化第5章数据建模较多内容