1. 程式人生 > >java中靜態變數和成員變數的區別

java中靜態變數和成員變數的區別

所屬不同:

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

在記憶體中位置不同:

靜態變數儲存於方法區裡的靜態區;成員變數儲存於堆記憶體區

在記憶體中出現的時間不同:

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

成員變數隨著物件(也叫例項)的建立而存在,隨著物件的消失而消失。

呼叫方式不同:

靜態變數可以通過類名呼叫,也可以通過物件呼叫; 成員變數只能通過物件名呼叫。

------------------

在靜態方法中是沒有this關鍵字的,如何理解呢?

靜態變數是隨著類的載入而載入,this是隨著物件的建立而存在。靜態先於物件存在。

靜態方法只能訪問靜態的成員變數和靜態的成員方法。


非靜態方法可以呼叫靜態的成員變數也可以呼叫非靜態的成員變數

非靜態方法可以呼叫靜態的成員方法,也可以呼叫非靜態的成員方法。