这是在一个项目中偶然发现关于this的问题,才驱使我写下这篇文章。
在正式进入主题之前,先来点“热身”操作-成员变量的初始化!举一个例子,如下所示:
在这里,声明成员变量时我没有采用默认初始化,而是手动赋值:
在constructor 1中我又初始化了成员变量。并且使用了this,不过在这里用与不用this没有影响!!做一个简单测试,如下:
采用constructor 2创建Animal对象,而不是采用constructor 1来创建Animal对象。打印结果:
可见,打印的是声明成员变量时的值,不是constructor 1中初始化的值。当然,你会说如果我采用constructor 1方法创建Animal对象,那么结果肯定是:
对,您说的很对!在这里,我不是和你争取论什么,只是想说明构造方法初始化成员变量之前,其实成员变量已经悄悄的初始化一次啦!
好了,回归正题吧??!
1. this与构造方法
this可以用于区别同名的变量,也可以调用构造方法,看一个小示例:
测试代码:
小结如下:
<1> this,只能在方法内部使用
<2>this()或者this(***)形式调用构造方法,注意:
<a>只可以放在构造方法的第一句
<b>只可以调用本类的构造方法,不可以调用父类的,调用父类用关键字super
2. this不是static
<1> this是一个变量,并且是一个局部变量,它代表当前对象句柄。
<2> 类的每个方法前面默认有个this
<3> this不可以用于静态方法中,说明this不是static类型变量。但是this可以引用静态成员
示例代码:
从上面代码中,可以看出this既可以调用static方法或者变量,也可以调用非static方法户主哦和变量。但是在static方法中不可以调用this变量,回忆一下,static方法中不可以调用非static方法,所以this是非static的变量。
再来看一个小示例,该类继承Father,重写getName()方法,在打印之前,可以试想一下结果是什么??
new Child()调用继承父类的get()方法,看看父类get()方法:
使用了this来调用getName()方法,原来以为打印结果会是跟父类有关,但是出人意料的结果显示如下:
仔细分析一下,您就会明白这是为什么。首先,每个类都会有一个this变量,当你调用get()方法虽然是调用了父类的方法,而且父类中该方法使用this调用了自身的getName()方法,但是在类Child中,this指向了当前Child对象。所以结果是上面那样。其次,也许这种解释会好理解一点吧,父类get()方法等效与下面写法:
这下,可以很清晰的看出打印结果的来由啦!!
3. this与内部类
这里所说的内部类指的是非static内部类,直接看代码吧!假设你已经明白下面两点的话:
<1>内部类可以访问外部类的任何权限的成员变量、常量或者成员方法
<2>外部类不可以访问内部类的任何权限的成员变量或者成员方法
代码很简单,就是一个外部类和一个内部类的嵌套,使用this区别同名变量或者同名方法。测试代码如下:
打印结果:
4. 返回当前对象
主要参考tij中的代码。将句柄返回给当前对象,那么经常在return 语句中使用this。
在Java源码中,有很多类似用法,看看append方法源码:
ok,说到这里!
分享到:
相关推荐
Java关键字之this用法详解.rar
总结了Java学习中的52个关键字(包括一些总结),如果觉得自己Java基础知识需要总结一下的,可以下载下来瞧瞧 2.this和super 1>在你的方法中的某个刑参名与当前对象的某个成员有相同的名字,这 时为了不至于混淆,...
Java关键字是Java编程语言中预定义的保留字,用于表示特定的语言功能或概念。它们在语法上具有特殊的意义,不能用作变量名、类名或其他标识符。掌握Java关键字的作用对于编写正确的Java代码至关重要。这些关键字包括...
this关键字的使用详细介绍:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不...
java this关键字的使用包括代码及注释,适合初学者
关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala Perl CC#Excel MS Access JSON图形映射NLP自然语言处理...
关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala Perl CC#Excel MS Access JSON图形映射NLP自然语言处理...
内容概要: 本文介绍了Java中的this关键字的用法和作用。读者将学习什么是this关键字以及它在实例方法、构造方法和内部类中的具体应用。此外,还将探讨this关键字与静态成员、方法参数和方法重载之间的关系。 能学...
Java语言中This关键字应用浅析,看完后帮助于JAVA中类的操作。
详解Java this 关键字
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。 super 与 this 关键字 super关键字:对父类成员的访问;this关键字...
23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字...
今天突然想到this的问题,搜了一波,终于找到个能用的,建个项目main运行一下就清楚多了。
2.3.this关键字: 10 2.4.子类对象的构造和初始化: 11 2.5.方法的覆盖: 11 2.6.各种数据类型之间的相互转换: 12 3.静态成员 13 4. Final关键字: 13 5. 抽象类: 13 6. 接口 14 7. 接口与抽象类...
本次内容:1、020509_【第5章:面向对象基础】_this关键字;2、020509_【第5章:面向对象基础】_static关键字
主要介绍了Java this 关键字的使用方法详解的相关资料,希望通过本文能帮助到大家,让大家彻底理解掌握这部分内容,需要的朋友可以参考下
import:导入,用于导入一个类或包。 instanceof:实例,用于判断一个对象是否是一个类的实例。 int:整型,用于表示一个整数。...this:这个,用于引用当前对象。 throw:抛出,用于抛出一个异常。
java代码-使用java解决用this关键字方法重载的源代码 ——学习参考资料:仅用于个人学习使用!
想要下载此文件,请先下载本人“java程序中的内存分配问题”,因为那个例子比较简单而且分析详细透彻,可以使你更容易理解,如果你对java程序执行过程中的内存分配有一定的了解,可以直接下载本文件