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

2021-08-27 13:51:54 字數 574 閱讀 4977

成員變數在類中,方法外;

成員變數:就是類中事物的屬性;

成員方法:就是類中的行為;

所屬不同:

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

在記憶體中位置不同:

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

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

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

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

呼叫方式不同:

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

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

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

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

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

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

Java靜態變數和非靜態變數

記憶體分配 靜態方法和靜態變數建立之後一直使用同一塊記憶體,是連續的。非靜態方法會存在於記憶體的多個地方,是離散的。生命週期 靜態變數的生存週期是應用的生存週期。非靜態變數的存在週期取決於例項化的類的存在週期。呼叫方式 靜態變數只能是 class.靜態變數 來呼叫,類的例項不能呼叫。非靜態變數在變數...

java中靜態變數和非靜態變數的區別

靜態變數前有static關鍵字修飾。1.記憶體分配 靜態變數在應用程式初始化時,就存在於記憶體當中,直到它所在的類的程式執行結束時才消亡 非靜態變數需要被例項化後才會分配記憶體。2.生存週期 靜態變數生存週期為應用程式的存在週期 非靜態變數的存在週期取決於例項化的類的存在週期。3.呼叫方式 靜態變數...

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

所屬不同 靜態變數屬於類,所以也稱為為類變數 成員變數屬於物件,所以也稱為例項變數 物件變數 記憶體中位置不同 靜態變數儲存於方法區的靜態區 成員變數儲存於堆記憶體 記憶體出現時間不同 靜態變數隨著類的載入而載入,隨著類的消失而消失 成員變數隨著物件的建立而存在,隨著物件的消失而消失 呼叫不同 靜態...