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.");
  }
}