Java 【11】this学习,浅谈this原理详解、this语句

本文探讨了Java中的this关键字,解释了在遇到局部变量和成员变量同名时,如何利用this来区分两者。此外,还阐述了在构造函数中this的使用,强调了this语句在构造函数中的位置要求,以及它在对象初始化过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           说道研究生到底应该干什么我自己也很困惑。来到兰理导师要求我们参加比赛,我们想着法子往出做东西;然后实验室要求发表论文,现在还不让专硕出去实习,研一的时候有比较多的课我努力的学习,我以为一切都应该是这样的,但通过比较才发现或许研究生应该有不一样的生活。前几天和一个朋友聊天发现他们都没有课,从研一就开始跟着老师做项目,我那是感觉研一总得上课吧,后来又遇到兰大的同学他说学习只是一个副业,大家都在干着自己的事儿,我的想法有点改变了,研究生或许真的该有些改变了。。。哎。。。开始技术!

      在前面编程的时候会遇到this.x = x;这样的句子,以前学过但都已经忘记this这一关键词到底是什么工作机制,现在开始复习一下。首先说一个简单的例子:

class Person{
	private String name;
	private int age;
	
	Person(String name){
		name = name;   //想这样的赋值运行结果会显示空
	}

想这样的赋值,运行结果会显示空。

没有把值赋给对象在堆内存的name,这是因为局部变量和成员变量名称相同了,运行机制是局部中有该变量名称就使用局部变量,如果没有才找成员变量,所以此处的name都是局部的name,所以不会赋值成功。

      所以需要将成员变量的标示this,用于区分局部变量和成员变量同名的情况。但这是为什么呢。this代表本类对象,即成员变量。同时在调用函数时都是将this省略的,写上有助于阅读。

	public static void main(String[] args) {
		
		Person p = new Person("linweieran");
		Person p1 = new Person("chengzhang");
		p.speak();
		p1.speak();

	}

}
class Person{
	private String name;
	private int age;
	
	Person(String name){
		this.name = name;   //name=name;想这样的赋值运行结果会显示空
	}
	Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	public void speak(){
		System.out.println("name="+name+"....;age="+age);
	}
}

然后,在本类功能内部使用了本类对象,都是this表示,代码如下:

public int compare(Person p){   //和别人比较是否是同龄人
		if(this.age>p.age)
			return this.age;
		else return  p.age;
	}

在构造函数间的代码应该是下面这样子的,this语句后面没有括号。this语句用于函数之间,传相应参数进行互相调用。

Person(String name,int age){
		//this.name = name; 构造函数间
		this(name);
		this.age = age;
	}


这样子创建对象Person p = new Person("linweieran",21);就将"linweieran"传给this(name),从而存入该对象所在堆内存。同时要注意this语句只能出现在构造函数的第一行!!因为初始化的动作要先执行,如果还有初始化细节要更先执行。

      好的,this的基础基本学习完毕。


 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值