image.png
static 關鍵字
意義:方便在沒有創建對象的清了下調用方法和變量
static 可以用來修飾類的成員方法、類的成員變量,另外,可以便攜static 代碼塊來優化程序性能
被static關鍵字修飾的方法或變量不需要依賴對象進行訪問,只要類被加載了,就可以通過類名去訪問
static 方法
static方法一般稱作靜態方法,由于靜態方法不依賴于任何對象就可以進行訪問,因此對于靜態方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變量,但是在非靜態成員方法中是可以訪問靜態成員方法/變量的
即使沒有顯示地聲明為static,類的構造器實際上也是靜態方法。
static 變量
static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
static成員變量的初始化順序按照定義的順序進行初始化。
static代碼塊
static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。
static塊可以置于類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執行每個static塊,并且只會執行一次。
為什么說static塊可以用來優化程序性能,是因為它的特性:只會在類加載的時候執行一次