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(){//调用方法并传入thismethod3(this);}}public class Test{public static void main(String[] args){//创建对象tThis2Test t = new This2Test("贝克");//对象t调用方法t.method4();}}
分析一波,先new一个t对象,传入贝克参数。t调method4方法,method4方法调用method3方法,传入this。这里的this值得就是调用method4方法的当前对象,也就是t。所以输出也是贝克。
