java this关键字的使用_Java关键字(五)——this

大家好,我是可乐,一个专注原创,乐于分享的程序猿。 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读。回复《电子书》有我为大家特别筛选的海量免费书籍资料

this 也是Java中的一个关键字,在《Java编程思想》第四版第五章5.4小节对 this 关键字是这样介绍的:

this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。

其实简单来说 this 关键字就是表示当前对象,下面我们来具体介绍 this 关键字在Java中的用法。

1、调用成员变量

在一个类的方法内部,如果我们想调用其成员变量,不用 this,我们会怎么做?

package com.ys.test;/*** Create by YSOcean*/
public class ThisTest {private String name = "Tom";public void  setName(String name){name = name;}public String getName() {return name;}}

看上面的代码,我们在 ThisTest 类中创建了一个 name 属性,然后创建了一个 setName 方法,注意这个方法的形参也是 String name,那么我们通过 name = name 这样赋值,会改变成员变量 name 的属性吗?

public static void main(String[] args) {ThisTest tt = new ThisTest();tt.setName("Marry");System.out.println(tt.getName());//Tom}

打印结果是 Tom,而不是我们重新设置的 Marry,显然这种方式是不能在方法内部调用到成员变量的。因为形参的名字和成员变量的名字相同,setName 方法内部的 name = name,根据最近原则,编译器默认是将这两个 name 属性都解析为形参 name,从而导致我们设值操作和成员变量 name 完全没有关系,当然设置不了。

解决办法就是使用 this 关键字。我们将 setName 方法修改如下:

public void  setName(String name){this.name = name;}

在调用上面的 main 方法进行赋值,打印的结果就是 Marry 了。

this 表示当前对象,也就是调用该方法的对象,对象.name 肯定就是调用的成员变量。

2、调用构造方法

构造方法是与类同名的一个方法,构造方法没有返回值,但是也不能用 void 来修饰。在一个类中,必须存在一个构造方法,如果没有,编译器会在编译的时候自动为这个类添加一个无参构造方法。一个类能够存在多个构造方法,调用的时候根据参数来区分。

package com.ys.test;/*** Create by YSOcean*/
public class ThisTest {private String name;public ThisTest(){this("Marry");}public ThisTest(String name) {this.name = name;}
}

通过 this("Marry") 来调用另外一个构造方法 ThisTest(String name) 来给成员变量初始化赋值。

注意:通过 this 来调用构造方法,只能将这条代码放在构造函数的第一行,这是编译器的规定,如下所示:放在第二行会报错。

3f7be5c8e87f94eb73ee41ebb930ef6e.png

3、调用普通方法

this 表示当前对象,那么肯定能够调用当前类的普通方法。

public void printName(){this.say();}public void say(){System.out.println("say method...");}

第 2 行代码,在 printName() 方法内部调用了 say() 方法。

4、返回当前对象

/*** Create by YSOcean*/
public class ThisTest {public Object newObject(){return  this;}
}

这表示的意思是谁调用 newObject() 方法,那么就返回谁的引用。

本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读。回复《电子书》有我为大家特别筛选的书籍资料

http://weixin.qq.com/r/iSqbg-fEGqplrbPg93_b (二维码自动识别)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

受小动物大脑结构启发,研究人员开发出新的深度学习模型:更少神经元,更多智能...

大数据文摘出品来源:sciencedaily编译: 朱科锦、coolboy从搜索引擎到自动驾驶汽车,人工智能已经进入了我们的日常生活。这与近年来计算能力的巨大提升有关。但是,最新的人工智能研究成果表明,更简单、更小的神经网络可以比以前更好…

python画画用哪库好_小白开始学Python最著名的绘图库

原标题:小白开始学Python最著名的绘图库 这是菜鸟学Python的第101篇原创文章 数据分析里面可视化是重要的环节,辛苦把数据采集,然后经历了很多工序的清洗之后,最后要展现给用户,最好的方法就是数据可视化。数据可视化是…

​2021年人工智能的四大趋势

来源:工信头条PART Ⅰ前沿资讯2021年人工智能的四大趋势美国《福布斯》双周刊网站刊载题为《2021年人工智能的四大趋势》的报道,作者系伯纳德马尔,文章根据当下形势,预测了明年人工智能的四个趋势。在2020年全球疫情暴发和世界被彻…

和移动对接短信http协议和cmpp协议那个好_python网络爬虫之HTTP原理,爬虫的基本原理,Cookies和代理介绍...

一.HTTP基本原理(一)URI和URLURI的全称为统一资源标志符,URL的全称为统一资源定位符。用来指定一个资源的访问方式,包括访问协议,访问路径和资源名称,从而找到需要的资源(网页的内容都是按照一定层次保存到网站系统的后台数据库或者文件夹内)…

计算机专业介绍范文英文,计算机专业个人简历英文范文

计算机专业个人简历英文范文2019-08-13版权声明举报文章I have the honor to present a brief introduction of myself to you in compliance with the requirements of your graduate admission I was born in November 7th, 1966, at the town of Changing, Beijing. My pare…

【Linux】使用ZStack私有云创建本地Linux服务器

1、运维配置了一台Linux的主机,然后安装了ZStack,前面这部分操作运维处理了。 2、首先打开Zstack的网址地址,一般是一个IP地址(此时不写) 3、然后进入页面后,默认进入首页,此时可以按照流程逐次…

信息科学部鼓励科学家更多瞄准“原创”研究

来源:《中国科学报》 (2020-09-28 第4版 自然科学基金)信息科学是研究信号/信息的产生、获取、传输、处理、存储、显示和应用及其相互关系的科学。在引导申请人进行分类申请方面,信息科学部认真落实四类科学问题属性资助导向的科学基金改革任务。2020年&…

未来的计算机作文100,未来的自己作文100字

未来的自己作文100字未来的我,将会是一名医生,我会让全世界的病人都康复起来,不再受病魔的折磨。下面由小编为您整理出的未来的自己作文,一起来看看吧。未来的自己作文1未来的我,将会是一名医生,我会让全世…

深度解析:特斯拉的工厂为什么建造得这么快?

内容来源:The BIM编辑:小艾 从建厂到投产到量产,特斯拉上海超级工厂只用了不到一年时间。特斯拉电动汽车市场占有率一直在上升,并因此扩大生产规模,以惊人的速度建立了多个超级工厂。内华达、纽约、德州、上海、柏林等…

html控制图的宽,用JointJS做一个简单的功能控制图

继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵。这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大。不过就我的需求场景,开源的Joint就足够了。接下来,我们…

kax格式怎么导入不了pr_pr如何导入.mogrt文件 pr模板导入教程

Mogrt 文件是什么,Mogrt格式的模板文件,又称之为Pr动态图形模板,是一种新型的模板格式。.mogrt文件如何使用,pr如何导入.mogrt文件呢?Macw小编为大家带来了pr模板导入教程,一起来看看吧!pr如何导…

《科学》:作弊者并非赢家,合作的物种表现得更好

本文系生物谷原创编译,欢迎分享,转载须授权!健康的人际关系的标志是你付出多少,得到多少。自然界有它自己的健康关系。互利共生(mutualism)是指物种之间的相互作用,对每个物种都有利。一个例子是…

plt.savefig 不保存边框_Matlab科研绘图 amp; 保存

为方便自己绘图,记录一下画图常用命令。会不定期完善代码,欢迎评论区交流好用的画图技巧。部分绘图效果展示绘图代码详解以随机噪声为例x代码绘图结果:保存图片方式①复制无损矢量图:在figure中使用菜单edit---->copy figure&a…

servlet源码查看

1,下载源码,点击此处可下载 2,创建web项目 我这里以jdbc这个web项目为例讲解 在javaee libraries中有个javaee.jar包,选中它-->右击--》Properties 找到你下载的jar包 打开---apply 即可】 在任意一个.java文件中,…

自动驾驶出行,进入下半场

来源:脑极体近两年,出行领域最值得人们期待的创新恐怕就是自动驾驶技术了。经过长达十年的技术积累和两年的商业试验,自动驾驶出行已经正在开放商用的道路上逐渐加速。就在这个月初,百度Apollo自动驾驶出租车在北京海淀、亦庄等区…

python安装百度aip_Python3.6安装aip

AIP的安装(此aip非百度AIP) 如同以往安装库的方法一样,进入目录:C:\Users\admin\AppData\Local\Programs\Python\Python36\Scripts 执行:pip install aip我们的aip目录如下:如果正常导入AipOcr的话会报错的…

python缩进格式错误的是_Python 中常见错误总结

IndentationError: unexpected indent Python 中强制缩进,, IndentationError: unexpected indent 缩进错误 这类错误非常常见,一般都是由于tab在不同的平台上占用长度不同导致,有些事程序员自己直接使用空格或其他来顶替tab。 解…

史上曾被认为不可能的十大科学难题全被实现

来源:科学解码对于科学家来说,好像没有什么事情是不可能做到的。纵观科学发展史,我们便会发现,一个又一个看似“不可能的任务”最终都成为可能,例如利用核能、上演太空飞行、创建力场以及远距离传物。几个世纪前&#…

广东省一本计算机学校排名,南方科技大学排名2021 广东排名第16全国排名第276...

南方科技大学排名2019 广东排名第16全国排名第276每年的大学排名位次争议很大,虽然各大学校长口头上称不在乎、不看重,但实际上却卯足干劲,希望学校排名靠前,因为大学排名一定程度上体现了高校的办学成就。高考升学网本文介绍的主…

webpack轻松入门教程

webpack之傻瓜式教程及前端自动化入门 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难…