Java學習筆記39——成員變數和區域性變數的區別
阿新 • • 發佈:2021-12-06
/* 成員變數與區域性變數的區別: 1、在類中的位置不同 成員變數 類中方法外 區域性變數 方法內或者方法宣告上 2、在記憶體中的位置不同 成員變數 堆記憶體: 隨著物件在堆記憶體中的建立而出現,所以成員變數是在堆記憶體中出現 區域性變數 棧記憶體: 由於方法執行是在棧中執行,所以在方法中定義的區域性變數 也就是存在與棧裡。 3、生命週期不同 成員變數 隨著物件的建立而存在,隨著物件的消失而消失 區域性變數 隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失 4、初始化值不同 成員變數 有預設的初始化值 原因:由於成員變數隨著物件的建立而存在,而物件的建立 是在堆記憶體中建立,而我們又知道堆記憶體中的變數建立的時候 系統會給予預設值,所以我們在程式碼中定義的時候可以不賦值。 區域性變數 沒有預設的初始化值,必須先定義,賦值,才能使用。 原因:由於區域性變數隨著方法的呼叫而存在,是在棧裡面呼叫的。 而我們知道棧裡面的變數系統不會給予預設值,所以我們在程式碼 中定義的時候必須要賦值。 問題: 1、成員變數的名稱可以和區域性變數的名稱一樣嗎? 可以,呼叫的時候,訪問的變數遵循就近原則。 2、方法與方法之間的區域性變數可以互相訪問嗎? 不可以,因為作用域的範圍不同。 */ class VariableDemo { //直接在類中定義的叫成員變數 int a; public static void main(String[] args) { //在方法裡面定義的叫區域性變數 int a = 20; System.out.println(a); } public void function1(){ int x = 20; } public void function2(){ int y = 30; // System.out.println(x); } }