JAVA中靜態變量及類加載順序

1、靜態變量、非靜態變量的區別

①java類的成員變量有倆種:

 一種是被static關鍵字修飾的變量,叫類變量或者靜態變量
 另一種沒有static修飾,爲成員變量

通俗點說:
類的靜態變量在內存中只有一個,java虛擬機在加載類的過程中爲靜態變量分配內存,靜態變量位於方法區,被類的所有實例共享。靜態變量可以直接通過類名進行訪問,其生命週期取決於類的生命週期。
而實例變量取決於類的實例。每創建一個實例,java虛擬機就會爲實例變量分配一次內存,實例變量位於堆區中,其生命週期取決於實例的生命週期。

2、靜態變量的使用

靜態變量是屬於類級別的,不需要創建對象就可以直接使用.
全局唯一,內存中唯一,靜態變量可以唯一標識某些狀態.
在類加載時候初始化,常駐在內存中,調用快捷方便.
應用場景:

  1. 靜態方法最適合工具類中方法的定義;比如文件操作,日期處理方法等.
  2. 靜態方法適合入口方法的定義;如單例模式,因爲從外部拿不到構造函數,所有定義一個靜態的方法獲取對象非常有必要.
  3. 靜態變量適合全局變量的定義.(如布爾型靜態成員變量做控制符)

JAVA中初始化的順序

JAVA中初始化的順序:
- 加載類;
- 靜態變量初始化;
-靜態塊;【其只能調度靜態的,不能調度非靜態的】
-成員變量;
-構造方法;

靜態變量的缺陷

(1)靜態方法不能調用非靜態的方法和變量.(非靜態方法可以任意的調用靜態方法/變量,因爲是類的變量,所有類中的所有方法、實例都共享)
(2)不能使用this和super關鍵字(屬於類級別,沒有創建對象前不可用this/super)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章