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