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,一经查实,立即删除!

相关文章

BZOJ2330 SCOI2011糖果

复习了一波差分约束。 http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好。 本题要倒序插入否则会被卡。 1 #include<bits/stdc.h>2 using namespace std;3 const int N1e510;4 struct node{5 int to,nex,w;6 }e[N<<2];7 int hea…

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

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

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

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

犯罪团伙

1 、犯罪团伙gang.cpp警察抓到了 n 个罪犯&#xff0c;警察根据经验知道他们属于不同的犯罪团伙&#xff0c;却不能判断有多少个团伙&#xff0c;但通过警察的审讯&#xff0c;知道其中的一些罪犯之间相互认识&#xff0c;已知同一犯罪团伙的成员之间直接或间接认识。有可能一…

计算机类对口升学都可以升啥专业,计算机专业对口升学专业试题.doc

计算机专业对口升学专业试题2010年对口升学班计算机专业期末考试专业试卷姓名第一部分:C语言部分(总分130分)一、选择题&#xff1a;(十小题&#xff0c;每题3分)1、C语言规定&#xff1a;在一个源程序中&#xff0c;main( )函数的位置( )A必须在最前面   B必须在系统调用的…

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

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

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

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

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

计算机专业个人简历英文范文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的主机&#xff0c;然后安装了ZStack&#xff0c;前面这部分操作运维处理了。 2、首先打开Zstack的网址地址&#xff0c;一般是一个IP地址&#xff08;此时不写&#xff09; 3、然后进入页面后&#xff0c;默认进入首页&#xff0c;此时可以按照流程逐次…

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

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

用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...

一个简单的学生信息管理系统基于python和tkinter 1。需求分析1。大学生信息管理系统使用tkinter接口创建一个窗口。使界面更漂亮。2. 实现与数据库的连接,教师和学生的信息可以保存或读取,可以通过访问数据库和基本信息。3.的功能添加、删除、搜索和修改学生数据。2. 功能设计和…

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

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

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

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

jsp内置对象(四)-----session对象

1、什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时&#xff0c;从进入网站到浏览器关闭所经过的这段时间&#xff0c;也就是用户浏览这个网站所花费的时间 从上述定义中可以看到&#xff0c;session实际上是一个特定的时间概念 …

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

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

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

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

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

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

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

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

servlet源码查看

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

计算机应用基础案例实训教程,计算机应用基础案例式实训教程

计算机应用基础案例式实训教程语音编辑锁定讨论上传视频《计算机应用基础案例式实训教程》是2014年3月出版的图书&#xff0c;作者是刘云芳。[1]书 名计算机应用基础案例式实训教程作 者刘云芳出版时间2014年3月页 数311 页定 价42 元开 本16 开装 帧平装ISB…