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