Java this关键字

this 关键字有三个应用:
  1.this调用本类中的属性,也就是类中的成员变量
  2.this调用本类中的其他方法
  3.this调用本类中的其他构造方法,调用时要放在构造方法的首行

来看下面这段代码:
public String name;public void showName(String name) {System.out.println(name);
}

上面的代码中有个叫name的成员变量,也有个同样叫name的方法参数。那么showName方法会输出参数的name还是成员变量name呢?

测试代码:

Foo foo = new Foo();
foo.name = "张三";
foo.showName("李四");

运行结果:

李四

运行结果显示答案是会输出参数的name,原因是Java语法获取变量的时候采取的是就近原则所以name代表的是离它最近的参数name。如果想要输出成员变量name怎么办,把参数名name改了吗?那又得多想一个变量名多麻烦啊。还好Java提供了this关键字可以引用类的对象。


把上面的代码改成:

public String name;public void showName(String name) {System.out.println("我是方法参数:" + name);System.out.println("我是类的属性:" + this.name);
}

运行结果:

我是方法参数:李四
我是类的属性:张三

可以看出this关键字代表调用改方法的对象,此时相当于对象foo。

再来看一个例子。

public Foo returnThis() {return this;
}public Foo getInstance() {return new Foo();
}

测试代码:

Foo foo = new Foo();Foo foo2 = foo.returnThis();
Foo foo3 = foo.getInstance();
System.out.println("foo和foo2是同一对象吗? --> " + (foo == foo2));
System.out.println("foo和foo3是同一对象吗? --> " + (foo == foo3));

运行结果:

foo和foo2是同一对象吗? --> true
foo和foo3是同一对象吗? --> false

这个例子很明确的说明了“this关键字代表调用改方法的对象”,该例子中return this返回的是调用该方法的对象也就是foo,所以foo2和foo指向的是同一对象。而 new Foo是创建一个新的Foo对象。所以foo3和foo并不指向同一对象。

 

 

转载于:https://www.cnblogs.com/Zombie-Xian/p/6245543.html

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

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

相关文章

linux下查看线程数的几种方法

1、 cat /proc/${pid}/status 2、pstree -p ${pid} 3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid} top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。 4、ps xH手册…

网站等保测评针对服务器,互联互通测评知识分享之信息安全建设要点

原创 医疗测评实验室 中国软件评测中心 1周前医院互联互通测评,即国家医疗健康信息互联互通标准化成熟度测评,近年来随着政策的要求、需求的驱动、技术的更迭、价值的引领,越来越被业内人士接受和认可,测评热度也水涨船高。国家卫…

树樱花满树繁花

废话就不多说了,开始。。。 学院的樱花开了,花开的很盛,满树的繁花扬张着天春的力活。 武汉三月的时候樱花就开了,武大的学同在空间里发各种玩游的照片,真是羡煞旁人。大连的天春来得晚,但究终还是赶上了。…

pandas合并groupby_pandas实践之GroupBy()

官网地址:https://pandas.pydata.org/docs/reference/groupby.htmlpandas中对数据进行分组操作的方法,官方有很详细的教程。下面的案例是真实遇到的问题,看一看用pandas是如何解决的。构造数据import pandas as pdimport numpy as npdf pd.D…

自学 web 前端人怎么找工作?

1,你做过的项目可以体现你的价值。2,你的个人博客可以反映你的思考。3,你的GitHub页面可以展示你的项目。4,你项目中的代码可以看出你编程的风格。1,2,3,4之间有交集。当你能证明,你…

《Breakfast At Tiffanys》

"生活中似乎有些男性想象着能拯救和引导一个年轻美丽纯洁善良却迷茫的女子,有些女性也想象着能用自己的善良与包容来安慰一个才华横溢却饱经苦闷与贫穷的男子,老实说,这很有成就感。虽然我的语气有些讽刺,但我相信在这些“光…

项目不需要SVN控制的时候,该怎么办

今天要用一个项目,当项目不需要SVN控制的时候,我们一般怎么办哪?可能很多人设置Windows显示隐藏文件,然后将项目中的所有.svn文件删除。下面,从网上找了个非常简单的方法第一步:建立一个名字叫做remove-svn…

erdas遥感图像几何校正_定量/高光谱遥感之—光谱分析技术

文章转载自微信公众号CSDN,作者冰清-小魔鱼,版权归原作者及刊载媒体所有。在定量遥感或者高光谱遥感中,信息提取主要用到光谱/波谱分析技术。本专题对光谱/波谱分析中涉及的流程及一些技术进行讲解,包括以下内容:基本概…

Zipkin-1.19.0学习系列1:java范例

2019独角兽企业重金招聘Python工程师标准>>> 官网地址: https://github.com/openzipkin/zipkin http://zipkin.io/ https://www.oschina.net/p/zipkin 截止到2017/1/4为止,最新版本为: Zipkin 1.19 下载地址: https://github.com/openzipkin/zipkin/arc…

PageRank算法

1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左側排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引…

linux中_在 Linux 桌面中开始使用 Lumina | Linux 中国

本文是 24 天 Linux 桌面特别系列的一部分。Lumina 桌面是让你使用快速、合理的基于 Fluxbox 桌面的捷径,它具有你无法缺少的所有功能。-- Seth Kenlon多年来,有一个名为 PC-BSD 的基于 FreeBSD 的桌面操作系统(OS)。它旨在作为一个常规使用的系统&#…

弹体飞行姿态仿真软件程序代写

题目弹体飞行姿态仿真软件毕业设计的任务和要求(1)掌握查阅参考文献的方法 (2)对弹体飞行运行学模型有所研究 (3)在给定初始俯仰角、加速度、弹体质量等参数的前提下,完成弹体飞行轨迹的绘制及不…

Asp.net中实现同一用户名同时登陆,注销先前用户(转)

Web 项目中经常遇到的问题就是同一用户名多次登陆的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法:将登陆后的用户名放到数据库表中;登陆后的用 户名放到Session中;登陆后的用户名放到Application中&#x…

hdu 2612 Find a way (广搜)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in t…

使用Notepad++开发C#,一个复杂点的csscript脚本

使用Notepad开发C#,一个复杂点的csscript脚本: 12345678910111213141516171819//css_dir ....lib;//css_ref Geb.Image.dll;//css_ref Geb.Image.ShapeAnalysis.dll;//css_ref Geb.Utils.dll;//css_ref Geb.Utils.WinForm.dll;//css_co /unsafe; using S…

正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟

五分钟搞定正则表达式,如果没搞定,再加两分钟【这是 ZY 第 18 篇原创文章】 文章概览一、正则表达式介绍正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE&#xf…

百度富文本编辑器,改变图片上传存储路径

我用的是最新版! 找到以下2个关键文件: YourPath.../Ueditor/php/config.json YourPath.../Ueditor/php/Uploader.class.php config.json找到如下代码: "imagePathFormat": "...(这里不用管)",//找到imagePathFormat所在…

如何手动给Docker容器设置静态IP

2019独角兽企业重金招聘Python工程师标准>>> 要点: 1.首先需要在宿主机上虚拟出来一个真实可用桥接网卡比如br0 2.docker启动的时候默认使用br0进行桥接网络 3.创建docker容器的时候使用--netnone模式 4.手动为每个创建的容器生成静态ip。但是ip每次在重…

获取滚动条宽度代码(记录)

1.创建一个嵌套节点&#xff0c;让外层节点产生滚动条。 2.用offsetWidth - clientWidth 即可获得滚动条宽度。 为了避免页面抖动&#xff0c;可以设置外层元素position:absolute和visibility:hidden 代码如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

的函数原型_JS基础函数、对象和原型、原型链的关系

JS的原型、原型链一直是比较难理解的内容&#xff0c;不少初学者甚至有一定经验的老鸟都不一定能完全说清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而这部分内容又是JS的核心内容&#xff0c;想要技术进阶的话肯定不能对这个概念一知半解&#xff0c;碰到…