JAVA中的this关键词 —— 初学java常见问题

这篇具有很好参考价值的文章主要介绍了JAVA中的this关键词 —— 初学java常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在之前讲解构造方法的时候,我给大家提到过一个this关键字,但之前讲解得并不很细致。所以今天我们再利用一篇文章,专门讲解这个this关键字,我们好好探究一下它到底有哪些细节。


全文大约2400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考

一. this关键字

1. 简介

我们知道,this是”这个“的意思。在java中表示当前类的对象,可以理解成指向对象本身的一个指针。通俗地说就是表示当前类对象”自己“,它是在对象被创建时自动产生的。我们使用this,可以用来调用本类的属性、方法、构造方法。当我们在构造方法中使用this时,this表示的是当前类的成员变量。

2. 作用

根据上面的简介,我们可以提取出this关键字的几个核心作用:

● 表示当前类对象;

● 调用当前类中的属性;

● 调用当前类的方法或构造方法。

二. 代码案例

接下来分别针对以上几种情况,给大家设计几个案例进行讲解。

1. 代表当前类对象

所谓代表当前类对象,就是指当我们创建一个类对象时,比如Person p=new Person()

p就是一个类对象,我们可以通过p.属性或p.方法的形式来进行调用。但如果我们是在Person类里面调用Person的属性或方法,其实可以直接使用this来替代当前的对象,即this.属性或this.方法。这里的this,就是当前类对象!

另外一个更常用的场景是在接口回调中。比如某个类的构造方法带有一个接口类型的参数,当前类又实现了该接口,当我们在当前类中调用这个构造方法时,就可以直接传递this作为参数。参考下面的Person代码:

publicclassPersonimplementsSport{

	// 姓名
	public String name;

	// 年龄
	privateint age;

	//定义带有3个参数的构造方法,第3个参数是自定义的Sport接口类型
	publicPerson(String name, int age, Sport sport){
		System.out.println("我的名字是:" + name + ",年龄:" + age);
		sport.pingpang();
	}

	@Override
	publicvoidpingpang(){
		System.out.println("我会打乒乓球");
	}

	// 才艺展示
	publicvoidshow(){
        //这里的第3个参数,我们就可以直接用this作为参数,代表当前类对象!!!
		Person p = new Person("张继科", 30, this);
	}

}

Sport接口代码参考如下:

publicinterfaceSport {

	//打乒乓球
	voidpingpang();
}

在上面的Person类中,我们定义了带有3个参数的构造方法,其中第3个参数是自定义的Sport接口类型。在show()方法中,我们调用Person的构造方法,当传递第3个参数时,就可以直接用this作为参数传递进去。因为Person类实现了Sport接口,所以Person类也就属于Sport类型,符合第3个参数的类型要求。因为this表示当前类对象,所以我们可以直接用this作为参数。

当然,这里涉及到了接口的概念和用法,我们还没有学习到。大家先别急,后面会专门给大家讲解接口,可以先关注一波,后续实时更新!本案例只是先供大家参考

调用类中的属性

大多数时候,一般的普通方法访问其他方法、成员变量时不必使用this关键字。但如果方法的形参与类中属性的名称相同,我们可以通过“this.属性名”的形式进行区分。

publicclassStudent {

	private String name;

	privateint age;

	private String sex;

	publicStudent(String name, String sex, int age) {
		//方法的形参与属性名相同,可以通过“this.属性名”的形式进行区分
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	publicstaticvoidmain(String[] args) {
		Student stu=new Student("一一哥", "男", 35);
		System.out.println("name="+stu.name+",sex="+stu.sex+",age="+stu.age);
	}

在上面的代码中,name、age、sex都是被private修饰的,因此我们不能在类的外部进行直接设置。为了解决这个问题,我们可以给Student类添加一个构造方法,然后在构造方法中传递参数进行修改。我们在 Student类的构造方法中使用this关键字调用name、age 和 sex属性,以此区分方法的形参。这里的this就表示当前对象,this.name=name语句是一个赋值语句。等号左边的this.name是当前对象的成员变量name,等号右边的name表示方法形参接收的数值。

3. 调用类中的方法

this关键字的另一个作用,就是让类中一个方法,访问该类里的另一个方法。

publicclassComputer {

	// 电脑品牌
	private String logo;

	// 播放音频
	publicvoidplaySound() {
		System.out.println("播放音频...");
	}

	// 播放视频
	publicvoidplayVideo() {
		// 同时播放音频
		this.playSound();

		System.out.println("播放视频...");
	}

	publicstaticvoidmain(String[] args) {
        //静态方法中不能使用非静态成员
		//this.playVideo();
        
		Computer com=new Computer();
		com.playVideo();
	}

}

在上面的代码中,我们在playVideo()方法中调用了playSound()方法,此时就可以通过”this.方法名“的形式进行调用。因为this可以代表任何对象,当this出现在某个方法体中,它所代表的对象是不确定的,但它的类型是确定的,它代表的就是当前类的实例对象。只有当这个方法被调用时,它所代表的对象才被确定下来,谁在调用这个方法,this 就代表谁。

但是我们不能在带有static关键词的方法中通过this.属性名或this.方法名来引用,这是因为Java语法有规定,静态成员不能直接访问非静态成员。在后面学习static关键字时,会再给大家详细讲解这一点!可以先关注一波~~

publicclassComputer {

	// 电脑品牌
	private String logo;

	// 电脑颜色
	private String color;

    //无参构造方法
	publicComputer() {
		// this(a,b)调用另一个构造方法
		this(null, null);
	}

    //1个参数的构造方法
	publicComputer(String logo) {
		// this(a,b)调用另一个构造方法
		this(logo, null);
	}

    //2个参数的构造方法
	publicComputer(String logo, String color) {
		System.out.println("logo=" + logo + ",color=" + color);
	}

	publicstaticvoidmain(String[] args) {
		Computer com=new Computer("苹果");
	}

}

大家注意,this()格式不能在普通方法中使用,只能在构造方法中使用。而且在构造方法中使用时,必须放在第一条语句!


三. 结语

至此就给大家把this关键字讲解完毕了,现在你知道this的作用了吗?对于我们来说,掌握this的3个核心作用即可:

● 表示当前类对象;

● 调用当前类中的属性;

● 调用当前类的方法或构造方法。

以后我们还会学习另一个super关键字,这个关键字和this的用法很类似,可能会让初学者有点迷糊,后面会给大家再额外讲解super,敬请期待,啾咪文章来源地址https://www.toymoban.com/news/detail-542336.html

java中this指代什么,java,this关键字,Powered by 金山文档

到了这里,关于JAVA中的this关键词 —— 初学java常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全渗透测试中的一款免费开源的超级关键词URL采集工具

    安全渗透测试中的一款免费开源的超级URL采集工具。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。 ####

    2024年02月03日
    浏览(45)
  • 关键词组合工具-自动关键词挖掘组成关键词软件免费

    组合工具,今天给大家分享一款免费的挖掘工具。自动挖掘流量,过滤无效。自动组成,组成标题。以及自动采集文章。详细参考图片 不少的网站能在相关的搜索引擎呈现的话,组合工具普通都会被这个搜索引擎所收录,不然也

    2023年04月08日
    浏览(46)
  • GPT关键词挖掘,自动关键词文章生成

    随着互联网的发展,内容营销已成为企业营销策略中不可或缺的一环。有效的文章生成可以帮助企业吸引更多的潜在客户,提高品牌曝光度和转化率,从而实现营销目标。 文章生成是指根据特定的和主题,使用软件工具自动生成相关的文章内容。与传统的

    2024年02月01日
    浏览(40)
  • 实现同时查找多个关键词——KeywordCrafter - 关键词匠心

    具体功能:同时查找多个,高亮加粗显示,并显示出现次数。 🧐碎碎念:最近在写文案的时候,总是要避免出现一个敏感词汇,利用 (command+F) or (Ctr+F) 查找,只能一个一个单词去查,很麻烦。🤷‍♂️ 所以我写了一个简单的网页,在文本框输入一整篇文章,在

    2024年02月13日
    浏览(52)
  • 长尾关键词挖掘软件-免费的百度搜索关键词挖掘

    嗨,大家好!今天,我想和大家聊一聊长尾挖掘工具。作为一个在网络世界里摸爬滚打多年的人,我对这个话题有着一些个人的感悟和见解,希望能与大家分享。 首先,让我坦白一点,长尾挖掘工具对于我来说真是救命稻草。在我刚开始做网站优化和内容创作的

    2024年02月09日
    浏览(75)
  • 关键词生成器在线-在线免费关键词生成器

    生成,什么是生成,生成就是根据你输入的一个生成成千上百的核心,围绕着你输入的核心词来生成的,优先生成大量用户搜索的,今天就给大家分享一款免费生成工具,生成的来源主要是用户都在搜索的词,相关搜索的

    2024年02月04日
    浏览(122)
  • 关键词提取 | 基于Textrank算法的两种关键词提取

    目录 一、PageRank算法 二、TextRank算法 1. 抽取(keyword extraction) 2. 关键短语抽取(keyphrase extration) 3. 关键句抽取(sentence extraction) 三、TextRank算法实现 1. 基于Textrank4zh的TextRank算法实现 2. 基于jieba的TextRank算法实现 3. 基于SnowNLP的TextRank算法实现 四、PageRank算法与Text

    2024年04月14日
    浏览(66)
  • 网站SEO关键词规划时如何筛选出合适的关键词?

    在网站SEO优化过程中,布局是一个至关重要的环节。首先,我们需要确定核心,然后通过各种策略和方法对进行扩展。完成扩展后,接下来的任务就是对这些扩展后的进行筛选。那么,如何进行有效的筛选呢?我们通常建议选择那些具有

    2024年04月17日
    浏览(63)
  • Stable Diffusion 告别猜关键词,LoRA适配关键词自动生成

    有没有想想过在SD绘图的时候下载好的LoRA模型选择之后不生效是为什么?或者说不知道怎么填写? 这里介绍基于 Civitai 的LoRA 使用方法。 如果没有安装的小伙伴可以参考前面的文章先对 Civitai 的模型管理进行安装和使用,确保你的SD主页已经出现了 Civitai 助手 选项卡。

    2024年02月09日
    浏览(50)
  • 一个AI关键词能卖500块?AI绘画引发研究关键词的商机

    一个AI能卖500块?AI绘画引发研究的商机! 绘画一直被人们看作是视觉艺术的呈现方式。通常情况下,学习绘画需要理解调色、构图和线条等要素。然而,自从AI介入绘画领域后,绘画的\\\"画风\\\"迅速发生了变化。网络上涌现出许多教程,教人如何学习AI绘画的关键

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包