this关键字的作用

本文详细解析了Java中this关键字的三大应用场景:调用本类属性、调用本类方法及表示当前对象。通过实例代码展示了如何正确使用this避免变量名冲突,调用不同构造方法,以及在方法中引用自身。
部署运行你感兴趣的模型镜像

this关键字的作用

this关键字主要有以下三种用途
  1. this调用本类属性
  2. this调用本类方法
  3. this表示当前对象
1. this调用本类属性

我们可以看如下代码:

public class Person {
	private String name;
	private int age;
	
	public Person(String name, int age)
	{
		name = name;
		age = age;
	}
	
	public void printInfo()
	{
		System.out.println("name: " + name + " age: " + age);
	}
}

我们发现参数与类中属性重名的时候,类中属性无法正常赋值。这个时候我们加上this关键字就可以解决这个问题。所以,java中访问累的属性,一定要加上this关键字。

public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
2. this调用本类方法
  • 调用普通方法
public class Person {
	private String name;
	private int age;
	
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
		this.printSth();
	}
	
	public void printSth()
	{
		System.out.println("************************");
	}
}

在继承中,强烈建议调用类的方法时加上this, 虽然也可以不加,但是在涉及到继承的时候有用。

  • this在构造函数中的使用

观察下面的代码

public class Person {
	private String name;
	private int age;
	
	public Person()  //无参构造函数
	{
		System.out.println("new了一个新对象");
	}
	
	public Person(String name)
	{
		System.out.println("new了一个新对象");
		this.name = name;
	}
	
	public Person(String name, int age)
	{
		System.out.println("new了一个新对象");
		this.name = name;
		this.age = age;
	}
    
    public void printInfo()
	{
		System.out.println("name: " + name + " age: " + age);
	}
}


public class TestMain {

	public static void main(String[] args) {
		Person per1 = new Person();
		Person per2 = new Person("kaikai");
		Person per3 = new Person("kaikai", 23);
		per1.printInfo();
		per2.printInfo();
		per3.printInfo();
	}
}

java,支持构造方法相互调用。但是使用时要注意以下两点。

  1. this调用构造方法的语句必须在构造方法首行。
  2. 使用this调用构造方法,一定要注意留出口,不要陷入死循环。
public Person()
	{
		System.out.println("new了一个新对象");
	}
	
	public Person(String name)
	{
		this();
		this.name = name;
	}
	
	public Person(String name, int age)
	{
		this(name);
		this.age = age;
	}
使用this表示当前对象。
class Person
{
	public void printSth()
	{
		System.out.println("Print方法:" + this);
	}
}

public class TestMain {

	public static void main(String[] args) {
		Person per1 = new Person();
		System.out.println("Main方法:" + per1);
		per1.printSth();
		Person per2 = new Person();
		System.out.println("Main方法:" + per2);
		per2.printSth();
	}
}

我们发现,一个对象调用本类的方法,那类里的this就表示调用方法的对象。

如上,万事如意。

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

Java 中,`this` 关键字是一个引用变量,它指向当前对象。`this` 关键字主要有以下作用: ### 指向调用对象 `this` 代表它所在函数所属对象的引用,即哪个对象在调用 `this` 所在的函数,`this` 就代表哪个对象。`this` 可以让成员函数知道“自己是谁”,进而在成员函数中访问和修改调用者的成员 [^1][^3]。 ```java class Person { public void printSth() { System.out.println("Print方法:" + this); } } public class TestMain { public static void main(String[] args) { Person per1 = new Person(); System.out.println("Main方法:" + per1); per1.printSth(); Person per2 = new Person(); System.out.println("Main方法:" + per2); per2.printSth(); } } ``` 在上述代码中,`this` 代表调用 `printSth` 方法的 `Person` 对象。 ### 解决名字冲突 当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加 `this` 来表明该变量是类的成员变量。即可以用 `this` 来区分成员变量和局部变量 [^4]。 ```java class Student { String name; // 定义一个成员变量name private void SetName(String name) { // 定义一个参数(局部变量)name this.name = name; // 将局部变量的值传递给成员变量 } } ``` 在 `SetName` 方法中,`this.name` 表示类的成员变量,而 `name` 表示方法的局部变量。 ### 调用本类中的其他构造方法 Java 支持构造方法相互调用,但使用 `this` 调用构造方法的语句必须在构造方法首行,并且一定要注意留出口,不要陷入死循环 [^5]。 ```java public class Person { String name; int age; public Person() { System.out.println("new了一个新对象"); } public Person(String name) { this(); this.name = name; } public Person(String name, int age) { this(name); this.age = age; } } ``` 在上述代码中,`Person(String name)` 构造方法调用了 `Person()` 构造方法,`Person(String name, int age)` 构造方法调用了 `Person(String name)` 构造方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值