Java 中的變數遮蔽是什麼?
在 Java 中,您可以宣告三種類型的變數,即例項變數、靜態變數和區域性變數。
- 區域性變數 - 在方法、建構函式或程式碼塊內部定義的變數稱為區域性變數。變數將在方法內宣告和初始化,並在方法完成時銷燬。
- 例項變數 - 例項變數是類內部但在任何方法外部的變數。這些變數在類被例項化時初始化。可以從該特定類的任何方法、建構函式或程式碼塊內部訪問例項變數。
- 類(靜態)變數 - 類變數是在類內部、任何方法外部,使用 static 關鍵字宣告的變數。
變數遮蔽
如果例項變數和區域性變數具有相同的名稱,無論何時您在方法中列印(訪問)它,都將列印區域性變數的值(遮蔽例項變數)。
示例
在以下 Java 示例中,類 FieldShadowingExample 具有兩個例項變數(name、age)和一個方法(display())。
在方法中,有兩個變數與例項變數相同(name 和 type)。
當您在方法中呼叫 print(訪問)它們時,將列印區域性變數的值,從而遮蔽例項變數的值。
public class FieldShadowingExample{
String name = "Krishna";
int age = 25;
public void display(){
String name = "Vishnu";
int age = 22;
System.out.println("Name: "+name);
System.out.println("age: "+age);
}
public static void main(String args[]){
new FieldShadowingExample().display();
}
}輸出
Name: Vishnu age: 22
如果您仍然需要在方法中訪問例項變數的值(在本例中),則需要使用 this 關鍵字(或物件)訪問它們,如下所示:
示例
public class FieldShadowingExample{
String name = "Krishna";
int age = 25;
public void display(){
String name = "Vishnu";
int age = 22;
System.out.println("Name: "+name);
System.out.println("age: "+age);
System.out.println("Name: "+this.name);
System.out.println("age: "+this.age);
}
public static void main(String args[]){
new FieldShadowingExample().display();
}
}輸出
Name: Vishnu age: 22 Name: Krishna age: 25
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP