`
mmdev
  • 浏览: 12917128 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Java关键字: this

 
阅读更多

这是在一个项目中偶然发现关于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,说到这里!

分享到:
评论
1 楼 爪哇鱼 2012-04-11  
说得很详细,感谢下!

相关推荐

    Java关键字之this用法详解.rar

    Java关键字之this用法详解.rar

    java关键字总结

    总结了Java学习中的52个关键字(包括一些总结),如果觉得自己Java基础知识需要总结一下的,可以下载下来瞧瞧 2.this和super 1&gt;在你的方法中的某个刑参名与当前对象的某个成员有相同的名字,这 时为了不至于混淆,...

    46个java关键字介绍和使用大全含示例(值得珍藏)

    Java关键字是Java编程语言中预定义的保留字,用于表示特定的语言功能或概念。它们在语法上具有特殊的意义,不能用作变量名、类名或其他标识符。掌握Java关键字的作用对于编写正确的Java代码至关重要。这些关键字包括...

    Java中this关键字使用小结

    this关键字的使用详细介绍:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不...

    java this关键字的使用

    java this关键字的使用包括代码及注释,适合初学者

    matlab导入excel代码-utl_nested_xml_file_to_sas_dataset:将XML文件嵌套到SAS数据集。关键字:

    关键字: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自然语言处理...

    matlab导入excel代码-utl_forecast_next_thee_months_sales:预测下一个月的销售量。关键字:sass

    关键字: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关键字.md

    内容概要: 本文介绍了Java中的this关键字的用法和作用。读者将学习什么是this关键字以及它在实例方法、构造方法和内部类中的具体应用。此外,还将探讨this关键字与静态成员、方法参数和方法重载之间的关系。 能学...

    Java语言中This关键字应用浅析

    Java语言中This关键字应用浅析,看完后帮助于JAVA中类的操作。

    【Java编程教程】详解Java this 关键字.pdf

    详解Java this 关键字

    Java面向对象继承.pdf

    使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。 super 与 this 关键字 super关键字:对父类成员的访问;this关键字...

    23.this关键字.zip

    23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字.zip23.this关键字...

    java中的this关键字

    今天突然想到this的问题,搜了一波,终于找到个能用的,建个项目main运行一下就清楚多了。

    Java面向对象程序设计笔记

    2.3.this关键字: 10 2.4.子类对象的构造和初始化: 11 2.5.方法的覆盖: 11 2.6.各种数据类型之间的相互转换: 12 3.静态成员 13 4. Final关键字: 13 5. 抽象类: 13 6. 接口 14 7. 接口与抽象类...

    020509_【第5章:面向对象基础】_this关键字与static关键字

    本次内容:1、020509_【第5章:面向对象基础】_this关键字;2、020509_【第5章:面向对象基础】_static关键字

    Java this 关键字的使用方法详解

    主要介绍了Java this 关键字的使用方法详解的相关资料,希望通过本文能帮助到大家,让大家彻底理解掌握这部分内容,需要的朋友可以参考下

    java关键字.docx

    import:导入,用于导入一个类或包。 instanceof:实例,用于判断一个对象是否是一个类的实例。 int:整型,用于表示一个整数。...this:这个,用于引用当前对象。 throw:抛出,用于抛出一个异常。

    java代码-使用java解决用this关键字方法重载的源代码

    java代码-使用java解决用this关键字方法重载的源代码 ——学习参考资料:仅用于个人学习使用!

    java中带有this关键字的程序内存分析

    想要下载此文件,请先下载本人“java程序中的内存分配问题”,因为那个例子比较简单而且分析详细透彻,可以使你更容易理解,如果你对java程序执行过程中的内存分配有一定的了解,可以直接下载本文件

Global site tag (gtag.js) - Google Analytics