成員變數和區域性變數,靜態變數的區別

2022-08-11 23:09:31 字數 1143 閱讀 1147

成員變數和區域性變數,靜態變數的區別

1.成員變數和區域性變數的區別

1)在類中的位置不同

成員變數:在類中方法外

區域性變數:在方法定義中或者方法宣告上

2)在記憶體中的位置不同

成員變數:在堆記憶體(成員變數屬於物件,物件進堆記憶體)

區域性變數:在棧記憶體(區域性變數屬於方法,方法進棧記憶體)

3)生命週期不同

成員變數:隨著物件的建立而存在,隨著物件的消失而消失

區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失

4)初始化值不同

成員變數:有預設初始化值

區域性變數:沒有預設初始化值,必須定義,賦值,然後才能使用。

注意事項:

區域性變數名稱可以和成員變數名稱一樣,在方法中使用的時候,採用的是就近原則。就近原則不是說宣告變數**和使用時的**挨得近,而是看變數是不是同一方法中還是同一類中.

2.靜態變數和成員變數的區別

靜態變數也叫變數 成員變數也叫物件變數

1)所屬不同

靜態變數屬於類,所以也稱為為類變數

成員變數屬於物件,所以也稱為例項變數(物件變數)

2)記憶體中位置不同

靜態變數儲存於方法區的靜態區

成員變數儲存於堆記憶體

3)記憶體出現時間不同

靜態變數隨著類的載入而載入,隨著類的消失而消失

成員變數隨著物件的建立而存在,隨著物件的消失而消失

4)呼叫不同

靜態變數可以通過類名.呼叫,也可以通過物件呼叫

成員變數只能通過 物件名.呼叫

成員變數 區域性變數 靜態變數

成員變數 成員變數定義在類中,在整個類中都可以被訪問。成員變數隨著物件的建立而建立,隨著物件的消失而消失,存在於物件所在的堆記憶體中。成員變數有預設初始化值。區域性變數 區域性變數只定義在區域性範圍內,如 函式內,語句內等,只在所屬的區域有效。區域性變數存在於棧記憶體中,作用的範圍結束,變數空間會自...

靜態變數 全域性變數和區域性變數

靜態變數 程式啟動時建立並初始化,程式結束時銷毀釋放。普通變數 程式自定義建立及初始化,在函式退出時或物件析構時自定義銷毀釋放。區域性變數 作用域為編譯單元 檔案作用域 函式 物件。全域性變數 作用域為全域性的靜態變數。static 定義作用域為當前編譯單元的靜態變數。extern 宣告作用域為全域...

靜態變數 全域性變數和區域性變數

1.從作用域看 c 變數根據定義的位置的不同的生命週期,具有不同的作用域,作用域可分為6種 全域性作用域,區域性作用域,語句作用域,類作用域,命名空間作用域和檔案作用域。1 全域性變數具有全域性作用域。全域性變數只需在乙個原始檔中定義,就可以作用於所有的原始檔。當然,其他不包含全域性變數定義的原始檔...