java中成員變數(例項變數),區域性變數,類變數的區別
阿新 • • 發佈:2018-12-16
主要從以下幾個方面來比較:
作用域:
成員變數:成員變數又叫例項變數,它是類的例項,所作用於所在的整個類。
區域性變數:只在某個範圍有效(例如方法中)。
類變數:有效性主要和變數前的修飾符有關,例如private修飾就只對此類有效,public對所有包都有效。
儲存位置:
成員變數:隨著物件的建立而建立,物件消失則此變數也消失,儲存於堆記憶體中。
區域性變數:在方法被呼叫時產生,方法呼叫結束則變數消失。儲存與棧記憶體中。
類變數:類載入即存在。
初始值:
成員變數:無須賦初始值,系統自動預設初始值。例如:String預設為null,int預設為0。
區域性變數:必須賦初始值才能使用,否則報空指標錯誤。
類變數:和成員變數相似。
呼叫方式:
成員變數:通過物件名呼叫,此變數屬於物件。
區域性變數:通過方法名呼叫。
類變數:此變數屬於類,可以直接通過類名呼叫,也可以通過物件名呼叫。
生命週期:
成員變數:隨著物件的建立而建立,隨著物件的消失而消失。
區域性變數:隨著方法的呼叫而建立,隨著方法的完成而消失。
類變數:隨著類的載入而存在,隨著類的消失而消失,生命週期最長。
附上簡單程式碼:
package study02; public class Test { private int a;//成員變數 private static String str;//靜態變數(類變數) public int print(){ int b=2;//區域性變數 return b; } public static void main(String[] args) { Test test=new Test(); System.out.println(Test.str);//呼叫類變數 System.out.println(test.str);//呼叫成員變數 System.out.print(test.print());//列印區域性變數 } //此處變數都使用private修飾而不使用public是為了減少程式碼的耦合。 }
執行結果:
null
null
2