简述
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(包含链接).
分享到:
相关推荐
《菜鸟Java葵花宝典2017-2018》是一本专注于Java学习与面试的资源集合,旨在帮助初学者系统地掌握Java编程语言并为面试做好充分准备。这本书可能涵盖了Java的基础知识、进阶特性、设计模式以及常见面试问题等内容。...
### SAP自学学习笔记知识点概述 #### 一、配置总体框架 **1.1 系统环境** - **定义**: 指的是SAP系统的基本硬件和软件环境。 - **重要性**: 正确配置系统环境是确保SAP系统正常运行的基础。 - **涉及内容**: - ...
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
综上所述,面对JAVA面试,面试者应当注重技术基础的学习与积累,并在此基础上提升自己的综合能力,包括但不限于沟通技巧、团队协作能力等。同时,了解当前市场的薪资水平和公司招聘偏好有助于更好地定位自己,为未来...
- 面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态三大特性。 - 平台无关性:通过Java虚拟机(JVM)实现了“一次编写,到处运行”的目标。 - 健壮性:具有自动垃圾回收功能,减少了内存泄漏等问题。...
本文将根据提供的链接和描述,整理出一系列高质量的Java学习网站,帮助大家从“菜鸟”成长为“高手”。 #### Java基础学习资源 1. **SCJP(Sun Certified Java Programmer)官方学习资源** - **网址**:...
根据提供的文件信息,我们可以推断出这是一套关于Android Studio 1.3.1的教学视频资料,主要面向初学者到进阶用户。接下来,我们将基于这些信息深入探讨相关的知识点。 ### Android Studio 1.3.1简介 Android ...
标题中的“20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建”表明这是一份由银河证券发布的关于2021年8月8日交通运输行业的研究报告,重点提及了菜鸟网络的业务发展情况以及京东航空的...
- **面向对象编程**:Java是一种面向对象的语言,系统的核心会涉及类的设计,包括学生类、班级类、教师类等,每个类都会有自己的属性和方法。 - **控制结构**:如if-else语句、switch-case、for、while循环用于...
- **学习途径**:建议使用在线教程(如菜鸟教程)进行入门学习。 **1.2 SQL基础** - **学习目标**:熟悉SQL语法,能够熟练地进行数据查询和简单的数据分析。 - **学习途径**:同样可以通过在线教程或书籍进行学习...
这份"java学习1-3课笔记"涵盖了初学者入门Java的基础知识,由张孝祥老师的课程内容整理而成,适合对编程感兴趣的菜鸟们作为学习参考资料。 1. **Java简介**: Java是由Sun Microsystems(现为Oracle Corporation的...
- **适用对象**:主要面向编程初学者和技术爱好者。 - **应用场景**: - **自学**:利用runoob提供的资源进行自我提升。 - **备课**:教师可以借助这些资源准备课程材料。 - **项目参考**:开发者在项目开发过程...
### 新版Android开发教程+笔记十一--可视化UI设计DroidDraw #### 1. DroidDraw简介 DroidDraw是一款强大的Android GUI可视化设计器,能够帮助开发者轻松创建复杂的Android Layout XML文件。这款工具基于Java Swing...
此外,“对刚学OO思想想俺一样的菜鸟或许有那么点帮助”暗示源码可能包含了一些面向对象编程(Object-Oriented Programming, OOP)的基础应用,如继承、封装和多态性。 【标签】:“winForm程序”说明这个游戏是...
Java提供了两个主要的技术开发平台:Java SE(标准版)用于桌面应用程序的开发,而Java EE(企业版)则针对网络程序和企业级应用。 要开始学习Java,你需要安装JDK(Java Development Kit),并配置相应的环境变量...
- **JDK(Java Development Kit)**:安装 JDK 1.7 或更高版本,因为 Android 应用主要使用 Java 语言编写。 - **Android SDK(Software Development Kit)**:包含了 Android 平台的各种工具和库文件,是开发 ...
DAMA学习笔记-第01-17章细化第5章数据建模较多内容