Java有一個(gè)關(guān)鍵字叫this
。 它是對(duì)類的當(dāng)前實(shí)例的引用。它只能在實(shí)例的上下文中使用。以下代碼顯示如何使用this
關(guān)鍵字。
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
}
當(dāng)實(shí)例變量或類變量被具有相同名稱的另一個(gè)變量覆蓋時(shí),需要使用關(guān)鍵字this
限定一個(gè)實(shí)例變量,并使用類名稱定義一個(gè)類變量。
下面的代碼顯示了如何使用this
關(guān)鍵字來引用一個(gè)實(shí)例變量,它的名字被一個(gè)局部變量覆蓋隱藏。
public class Main {
int num = 2018; // 這是一個(gè)實(shí)例變量
void printNum(int num) { // 這個(gè)參數(shù)的名稱也叫 num ,與上面實(shí)例變量同名
System.out.println("Parameter num: " + num); // 打印參數(shù) num 的值
System.out.println("Instance variable num: " + this.num); // 打印實(shí)例變量 num 的值
}
public static void main(String[] args) {
Main tt6 = new Main();
tt6.printNum(2017);
}
}
上面的代碼生成以下結(jié)果。
Parameter num: 2017
Instance variable num:2018
注意:有時(shí),需要保持變量名相同,因?yàn)樗鼈兇硐嗤氖虑椤?/p>
例如,以下代碼非常常見:Student
類聲明了一個(gè)實(shí)例變量id
。 在其setId()
方法中,它還命名參數(shù)id
,并使用this.id
引用實(shí)例變量。
它還使用this.id
在其getId()
方法中引用實(shí)例變量id
。
public class Student {
private int id; // An instance variable
public void setId(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
}
可以使用關(guān)鍵字this
來限定實(shí)例方法名。 以下代碼顯示使用關(guān)鍵字this
調(diào)用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.");
}
}