this关键字一共有4种用法:
- 调用成员变量。
- 调用成员方法。
- 调用其他重载的构造器。
- 表示当前对象。
1、调用成员变量
在一个类的方法或构造方法中,当成员变量与局部变量名字相同时,可以使用 this.变量名
来表示成员变量。
public class Person {
//声明成员变量
private String name;
//方法中调用成员变量
public void setName(String name){
this.name = name;
}
//构造方法中调用成员变量
public Person(String name) {
this.name = name;
}
}
2、调用成员方法
在方法内部我们也可以通过this关键字调用其他成员方法。不过直接调用也可以,所以没多大意义。
public class DemoTest {
public void method1() {
System.out.println("这是成员方法");
}
public void method2() {
//以下两种方式效果一样
method1();
this.method1();
}
}
3、调用其他重载的构造方法
使用this关键字调用其他重载的构造方法是this关键字非常重要的用法之一。使用this调用其他构造方法时。必须写在第一行。
public class DemoTest {
private String name;
private int age;
//无参构造器
public DemoTest() {
//使用this调用参数为String类型的构造器
this("Ben");
}
//参数为String类型的构造器
public DemoTest(String name) {
//使用this调用参数为String和int类型的构造器
this(name, 22);
}
//参数为String和int类型的构造器
public DemoTest(String name, int age) {
this.name = name;
this.age = age;
}
}
4、this表示当前对象
public class This2Test{
//定义一个属性
public String name;
//参数为String类型的构造器
public This2Test(String name){
this.name = name;
}
//定义一个参数为引用类型的方法
public void method3(This2Test tt){
//输出该对象的属性
System.out.println(tt.name);
}
public void method4(){
//调用方法并传入this
method3(this);
}
}
public class Test{
public static void main(String[] args){
//创建对象t
This2Test t = new This2Test("贝克");
//对象t调用方法
t.method4();
}
}
分析一波,先new一个t对象,传入贝克参数。t调method4方法,method4方法调用method3方法,传入this。这里的this值得就是调用method4方法的当前对象,也就是t。所以输出也是贝克。