this关键字一共有4种用法:

  1. 调用成员变量。
  2. 调用成员方法。
  3. 调用其他重载的构造器。
  4. 表示当前对象。


1、调用成员变量

在一个类的方法或构造方法中,当成员变量与局部变量名字相同时,可以使用 this.变量名 来表示成员变量。

  1. public class Person {
  2. //声明成员变量
  3. private String name;
  4. //方法中调用成员变量
  5. public void setName(String name){
  6. this.name = name;
  7. }
  8. //构造方法中调用成员变量
  9. public Person(String name) {
  10. this.name = name;
  11. }
  12. }

2、调用成员方法

在方法内部我们也可以通过this关键字调用其他成员方法。不过直接调用也可以,所以没多大意义。

  1. public class DemoTest {
  2. public void method1() {
  3. System.out.println("这是成员方法");
  4. }
  5. public void method2() {
  6. //以下两种方式效果一样
  7. method1();
  8. this.method1();
  9. }
  10. }

3、调用其他重载的构造方法

使用this关键字调用其他重载的构造方法是this关键字非常重要的用法之一。使用this调用其他构造方法时。必须写在第一行。

  1. public class DemoTest {
  2. private String name;
  3. private int age;
  4. //无参构造器
  5. public DemoTest() {
  6. //使用this调用参数为String类型的构造器
  7. this("Ben");
  8. }
  9. //参数为String类型的构造器
  10. public DemoTest(String name) {
  11. //使用this调用参数为String和int类型的构造器
  12. this(name, 22);
  13. }
  14. //参数为String和int类型的构造器
  15. public DemoTest(String name, int age) {
  16. this.name = name;
  17. this.age = age;
  18. }
  19. }

4、this表示当前对象

  1. public class This2Test{
  2. //定义一个属性
  3. public String name;
  4. //参数为String类型的构造器
  5. public This2Test(String name){
  6. this.name = name;
  7. }
  8. //定义一个参数为引用类型的方法
  9. public void method3(This2Test tt){
  10. //输出该对象的属性
  11. System.out.println(tt.name);
  12. }
  13. public void method4(){
  14. //调用方法并传入this
  15. method3(this);
  16. }
  17. }
  18. public class Test{
  19. public static void main(String[] args){
  20. //创建对象t
  21. This2Test t = new This2Test("贝克");
  22. //对象t调用方法
  23. t.method4();
  24. }
  25. }

分析一波,先new一个t对象,传入贝克参数。t调method4方法,method4方法调用method3方法,传入this。这里的this值得就是调用method4方法的当前对象,也就是t。所以输出也是贝克。