變數的有效範圍是指程式碼能夠訪問該變數的地區,若超出該地區訪問變數,則編譯時間會出現錯誤。有效範圍決定了變數的生命週期,變數的生命週期是指從聲明一個變數並分配記憶體空間開始,到釋放該變數並清除所佔用的記憶體空間結束。進行變數聲明的位置,決定了變數的有效範圍,根據有效範圍的不同,可以將變數分為以下兩種。
成員變數:在類中聲明,在整個類中有效。
局部變數:在方法內或方法內的某代碼塊(方法內部,“{”與“}”之間的代碼)中聲明的變數。在代碼塊聲明的變數,只在當前代碼塊中有效;在代碼塊外、方法內聲明的變數在整個方法內都有效。
下面先來通過如下代碼初步瞭解成員變數和局部變數的聲明及使用範圍。
public class olympics {
private int medal_all=800; //成員變數
public void china(){
int medal_cn=100; //方法的局部變數
if(true){ //代碼塊
int gold=50; //代碼塊的局部變數
medal_cn+=50; //允許訪問
medal_all-=150; //允許訪問
}
gold=100; //編譯出錯
medal_cn+=100; //允許訪問
medal_all-=200; //允許訪問
}
public void other(){
medal_all=800; //允許訪問
medal_cn=100; //編譯出錯, 不能訪問其他方法中的局部變數
gold=10; //編譯出錯
}
}
1.成員變數
類的成員變數又可分為兩種:靜態變數和執行個體變數。靜態變數是指通過static關鍵字進行修飾的成員變數,沒有被static關鍵字修飾的變數為執行個體變數。它們的區別如下。
靜態變數的有效範圍是整個類,並且可以被類的所有執行個體共用。可以通過“類名.變數名”的方式來訪問靜態變數。靜態變數的生命週期取決於類的生命週期,當類被載入時,為類中的靜態變數分配記憶體空間,當卸載類時,釋放靜態變數佔用的空間,靜態變數被銷毀。類載入時,就為靜態變數分配內了存空間,之後無論建立了多少類的執行個體,都不會再為靜態變數分配記憶體空間,這些執行個體會使用同一個靜態變數。