更新時間:2021-04-20 16:00:45 來源:動力節(jié)點 瀏覽868次
Java有一個名為 this 的關(guān)鍵字。它是對類的當(dāng)前實例的引用。
它只能在實例的上下文中使用。
以下代碼顯示如何使用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)實例變量或類變量被具有相同名稱的另一個變量隱藏時,我們需要使用關(guān)鍵字this限定一個實例變量,并使用類名稱定義一個類變量。
Java 中為解決變量的命名沖突和不確定性問題,引入關(guān)鍵字 this 代表其所在方法的當(dāng)前對象的引用:
1.構(gòu)造方法中指該構(gòu)造器所創(chuàng)建的新對象;
2.方法中指調(diào)用該方法的對象;
3.在類本身的方法或構(gòu)造器中引用該類的實例變量(全局變量)和方法
this 只能用在構(gòu)造器或者方法中,用于獲得調(diào)用當(dāng)前的構(gòu)造器方法的對象引用。可以和任何的對象引用一樣來處理這個this對象。
說明:
1.當(dāng)實例變量和局部變量重名,JAVA 平臺會按照先局部變量、后實例變量的順序?qū)ふ摇<矗椒ㄖ惺褂玫降淖兞康膶ふ乙?guī)律是先找局部變量,再找實例變量。如果沒用找到,將會有一個編譯錯誤而無法通過編譯。
2.如果使用 this.a,則不會在方法(局部變量)中尋找變量 a ,而是直接去實例變量中去尋找,如果尋找不到,則會有一個編譯錯誤。
3.在一個方法內(nèi),如果沒有出現(xiàn)局部變量和實例變量重名的情況下,是否使用 this 關(guān)鍵字是沒有區(qū)別的。
4.在同一個類中,Java 普通方法的互相調(diào)用可以省略 ?this. ?,而直接使用方法名 + 參數(shù)。因為 Java 編譯器會幫我們加上。
例子:
下面的代碼顯示了如何使用 this 關(guān)鍵字來引用一個實例變量,它的名字被一個局部變量隱藏。
public class Main {
int num = 2014; // An instance variable
void printNum(int num) {
System.out.println("Parameter num: " + num);
System.out.println("Instance variable num: " + this.num);
}
public static void main(String[] args) {
Main tt6 = new Main();
tt6.printNum(2000);
}
}
上面的代碼生成以下結(jié)果。
注意:
下面的代碼顯示了如何使用 this 關(guān)鍵字來引用一個實例變量,它的名字被一個局部變量隱藏。
例如,以下代碼非常常見:
Student 類聲明了一個實例變量 id。在其 setId() 方法中,它還命名參數(shù) 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;
}
}
我們可以使用關(guān)鍵字 this 來限定實例方法名稱。以下代碼顯示使用關(guān)鍵字 this 調(diào)用 m2() 方法的 m1() 方法。
public class Main {
void m1() {
// Invoke the m2() method
this.m2(); // same as "m2();"
}
void m2() {
// do something
}
}
以上就是動力節(jié)點小編介紹的“Java中this是什么意思”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。
初級 202925
初級 203221
初級 202629
初級 203743