首頁 > 易卦

第十一篇:Java變數的有效範圍

作者:由 米粒教育 發表于 易卦日期:2022-04-12

例項變數是全域性變數嗎

Java虛擬機器會未宣告的變數分配儲存空間,用於儲存資料。在程式執行過程中,當變數不再使用時,Java虛擬機器會釋放為變數分配的儲存空間,此時變數已經完成了它的使命,變數處於消亡狀態,因此變數是有生命週期的。

變數的生命週期是指從宣告一個變數並分配儲存空間開始,到釋放該變數並清除所佔用的記憶體空間結束。前面說過,在類中宣告變數時,可以在類體中宣告變數,也可以在類的方法中宣告變數。在類中宣告變數的位置,決定了變數的有效範圍。

變數的有效範圍是指程式程式碼能夠訪問變數的區域。在類方法中宣告的變數只能在類的方法內部使用,類方法內部的程式碼可以訪問該變數,類方法外部的程式碼如果訪問該變數,程式碼編譯時會報錯。在類體中宣告的變數,可以在整個類的內部使用。

根據變數的有效範圍,可以把變數分為全域性變數和區域性變數。全域性變數在類體中宣告,全域性變數也稱為成員變數,多用於類的屬性宣告。區域性變數在類方法中宣告,多用於方法內部儲存臨時資料,其有效範圍僅限於該變數所在的方法內。

成員變數(全域性變數)

按照變數的訪問方式,成員變數又分為靜態變數和例項變數。

靜態變數用static關鍵字修飾,只要類被載入到記憶體,靜態變數就會被分配儲存空間。靜態變數可以在類沒有例項化的情況下,其他類可以透過“類名。靜態變數”的方式訪問該變數。

例項變數只有在類被例項化的情況下,才能夠分配儲存空間。其他類可以透過“例項化物件名。例項變數”方式訪問該變數。

關於類的例項化在後面的課程內容會詳細講述。

區域性變數

在類方法中宣告的變數稱為區域性變數,區域性變數的有效範圍只能在宣告該變數的方法體內,方法體外的程式碼不能訪問該變數。

當方法被呼叫時,Java虛擬機器會為方法內的變數分配儲存空間,當方法呼叫結束後,Java虛擬機器會釋放方法內所有變數的已分配的儲存空間,變數也被銷燬。

在方法體內宣告的變數名稱(區域性變數)可以和類體中宣告的變數名稱(成員變數)相同,此時方法體內的變數會掩蓋成員變數,成員變數在該方法中失效。

變數的有效範圍如下圖所示:

第十一篇:Java變數的有效範圍

變數的有效範圍

案例1:

在PBaseUnit43Case1專案unit43包下建立Case2類,在類中宣告一個靜態變數age,一個例項變數name,在main方法中宣告一個區域性變數height和name,然後輸出age、name、height三個變數的值到控制檯。程式碼如下:

/**

* @Title: Case2。java

* @Package unit43

* @Description: Java基礎知識課程案例

* @author 程式設計訓練營

* @date

* @version V1。0

*/

package unit43;

/**

* @ClassName: Case2

* @Description: Java語言基礎學習單元(變數的有效範圍)案例1

* @author 程式設計訓練營

* @date

*

*/

public class Case2 {

// 宣告靜態變數age

static String age = “21”;

// 宣告例項變數name

String name = “Mary”;

/**

* @Title: main

* @Description: Java程式入口main方法

* @param @param args 引數

* @return void 返回型別

* @throws

*/

public static void main(String[] args) {

// 宣告區域性變數height

int height = 45;

/**

* 區域性變數name和例項變數name名稱相同

* 例項變數name失效

*/

String name = “Henry”;

// 輸出靜態變數age

System。out。println(“靜態變數age為:”+ age);

// 輸出例項變數name,實際輸出的是區域性變數name

System。out。println(“例項變數name為:”+ name);

// 輸出區域性變數height

System。out。println(“區域性變數height為:”+ height);

}

}

程式執行結果如下圖所示:

第十一篇:Java變數的有效範圍