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

2021-08-10 00:23:26 字數 584 閱讀 4205

靜態變數前有static關鍵字修飾。

1.記憶體分配

靜態變數在應用程式初始化時,就存在於記憶體當中,直到它所在的類的程式執行結束時才消亡;

非靜態變數需要被例項化後才會分配記憶體。

2.生存週期

靜態變數生存週期為應用程式的存在週期;

非靜態變數的存在週期取決於例項化的類的存在週期。

3.呼叫方式

靜態變數只能通過「類.靜態變數名」呼叫,類的例項不能呼叫;

非靜態變數當該變數所在的類被例項化後,可通過例項化的類名直接訪問。

4.共享方式

靜態變數是全域性變數,被所有類的例項物件共享,即乙個例項的改變了靜態變數的值,其他同類的例項讀到的就是變化後的值;

非靜態變數是區域性變數,不共享,即乙個類的不同例項訪問的非靜態變數可以是不同的值。

5.訪問方式

靜態成員不能訪問非靜態成員;

非靜態成員可以訪問靜態成員。

Java靜態變數和非靜態變數

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

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

java 靜態變數 與 非靜態變數

一 建立乙個類的物件時 new 類名 時,該類的.class檔案會被載入到一段記憶體中。1.先將該類的.class檔案會被載入到一段記憶體,初始化static屬性和方法,為他們分配空間,以後一直在記憶體中,即使這個物件被銷毀。這就是不建議使用static屬性和方法的原因之一 2.copy其中非sta...