Java 中的 this 關鍵字
關鍵字 this
是 Java 中引用當前物件的引用變數。
Java 中 this
關鍵字的各種用法如下:
- 它可用於引用當前類的例項變數
- 它可用於呼叫或啟動當前類建構函式
- 它可以作為方法呼叫中的引數傳遞
- 它可以在建構函式呼叫中作為引數傳遞
- 它可用於返回當前的類例項
this
關鍵字舉例
class Account {
int a;
int b;
public void setData(int a , int b){
a = a;
b = b;
}
public void showData(){
system.out.println("value of A ="+a);
System.out.println("value of B="+b);
}
public static void main(string [args]){
Account obi = new Account ;
obj.setData(2, 3);
obj.ShowData();
}
}
class
:名為Account
的類- 例項變數:a 和 b
setData
方法:設定 a 和 b 的值。showData
方法:顯示 a 和 b 的值。main
方法:我們為 Account 類建立一個物件,並呼叫方法設定資料和顯示資料。
讓我們編譯並執行程式碼,
C:\Tastons> java Account
Value of A = 0
Value of B = 0
我們對 a 和 b 的預期輸出應分別初始化為值 2 和 3,但輸出值是 0,為什麼?我們來看一下。
在方法 setData()
中,引數宣告為 a 和 b,而例項變數也命名為 a 和 b。
在執行期間,編譯器會困惑,比如分配的運算子左側的 a
是例項變數還是區域性變數呢?因此,在呼叫方法集資料時,它不會設定 a
的值。
解決方案是 this
關鍵字,使用 this
關鍵字後跟 .
運算子然後再加 a
和 b
。
public void setData(int a , int b){
this.a = a;
this.b = b;
}
在程式碼執行期間,當物件呼叫方法 setdata
時。關鍵字 this
由物件處理程式 obj
替換。
所以現在編譯器知道,
- 左側的
a
是例項變數。 - 而右側的
a
是區域性變數
現在變數已正確初始化,並能顯示預期輸出。
C:\Tastons> java Account
Value of A = 2
Value of B = 3
假設你足夠聰明,可以為例項變數和方法引數選擇不同的名稱。
class Account {
int a;
int b;
public void setData(int c , int d){
a = c;
b = d;
}
....
但是這一次,你建立了類的兩個物件,每個物件都呼叫 setData
方法。
編譯器將如何確定它是否應該在 object1
或 object2
的例項變數上工作。
public void setData(int c , int d){
a = c;
b = d;
}
public static void main(string args[]) {
Account object1 = new Account();
object1.setData(2, 3);
Account object2 = new Account();
object2.setData(4, 3);
}
編譯器隱式地將例項變數附加到 this
關鍵字(下圖)。
這樣當物件 1 呼叫 setData
方法時,例項變數被其引用變數追加。
object1.a = c;
object1.b = d;
當物件 2 呼叫 setData
方法時,物件 2 的例項變數被修改。
object2.a = c;
object2.b = d;
編譯器本身會處理此過程。除非在我們的示例中存在異常情況,否則你不必顯式地附加 this
關鍵字。
示例: 學習來使用 this
關鍵字
class Account{
int a;
int b;
public void setData(int a ,int b){
a = a;
b = b;
}
public void showData(){
System.out.println("Value of A ="+a);
System.out.println("Value of B ="+b);
}
public static void main(String args[]){
Account obj = new Account();
obj.setData(2,3);
obj.showData();
}
}
步驟 1 a
和 b
的值顯示為零?要更正這個錯誤,請使用 this
關鍵字新增到程式。
this.a =a;
this.b =b;
步驟 2: 編譯和執行程式碼,此時,a 和 b 的值分別設定為 2 和 3。
摘要
- Java 中的
this
關鍵字是一個引用當前物件的引用變數。 - 它可用於引用當前類例項變數
- 它可用於呼叫或啟動當前類建構函式
- 它可以作為方法呼叫中的引數傳遞
- 它可以在建構函式呼叫中作為引數傳遞
- 它可用於返回當前的類例項
this
是方法正在被呼叫的當前物件的引用,。- 你可以使用
this
關鍵字來避免例項/物件的方法/建構函式中的命名衝突。