Java this關鍵字

this關鍵字是什麼?

Java有一個關鍵字叫this。 它是對類的當前實例的引用。它只能在實例的上下文中使用。以下代碼顯示如何使用this關鍵字。

public class Main {
  int varA = 1;
  int varB = varA; // Assign value of varA to varB
  int varC = this.varA; // Assign value of varA to varC
}

當實例變量或類變量被具有相同名稱的另一個變量覆蓋時,需要使用關鍵字this限定一個實例變量,並使用類名稱定義一個類變量。

實例

下面的代碼顯示瞭如何使用this關鍵字來引用一個實例變量,它的名字被一個局部變量覆蓋隱藏。

public class Main {
  int num = 2018; // 這是一個實例變量

  void printNum(int num) { // 這個參數的名稱也叫 num ,與上面實例變量同名
    System.out.println("Parameter num: " + num); // 打印參數 num 的值
    System.out.println("Instance variable num: " + this.num); // 打印實例變量 num 的值
  }

  public static void main(String[] args) {
    Main tt6 = new Main();
    tt6.printNum(2017);
  }
}

上面的代碼生成以下結果。

Parameter num: 2017
Instance variable num:2018

注意:有時,需要保持變量名相同,因爲它們代表相同的事情。

例如,以下代碼非常常見:
Student類聲明瞭一個實例變量id。 在其setId()方法中,它還命名參數id,並使用this.id引用實例變量。
它還使用this.id在其getId()方法中引用實例變量id

public class Student {
  private int id; // An instance variable
  public void setId(int id) {
    this.id = id;
  }

  public int getId() {

    return this.id;
  }
}

可以使用關鍵字this來限定實例方法名。 以下代碼顯示使用關鍵字this調用m2()方法的m1()方法。

public class Main {
  void m1() {
    // Invoke the m2() method
    this.m2(); // same as "m2();" 
    // 或者不要 this 直接 m2();
    // m2();
  }

  void m2() {
    // do something
    System.out.println("This m2() method.");
  }
}