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

上一篇: Java類成員訪問級別 下一篇: Java final關鍵字