static所修飾的方法和變數是屬於類本身,不屬於物件,無論建立多少個物件例項都是共用乙個方法和變數.靜態的方法不可以呼叫非靜態的方法,非靜態的方法可以呼叫靜態的方法.書上一般都這麼寫,但是作為入門的同學來說,記憶起來也很容易混淆起來。但仔細想想,也很容易理解。
靜態方法之所以不能呼叫非靜態方法,是因為非靜態方法屬於某乙個物件,而不是屬於類,非靜態方法的呼叫只能通過建立物件來呼叫。
同樣,靜態方法也不能使用非靜態變數。模擬,我們很容易知道,非靜態類可以呼叫靜態方法。為什麼呢?如果還不清楚,就補一下一下知識:靜態方法及靜態變數和普通方法變數的載入順序來說明吧。
靜態方法是在類載入前進行載入,在程式結束時才銷毀。在某種意義上說,靜態變數的生命週期取決於對應類的生命週期。
其次,和普通方法比,靜態方法存在於整個程式的生命週期,不會因為使用完畢而銷毀,對記憶體上的消耗是比較大的,對記憶體要求比較高時,要慎用static,那麼static也不是一無是處。當乙個物件需要頻繁建立或銷毀時,對系統的開銷比較大,這時候,static的優勢就體現出來了。因為static的**塊已經存在記憶體當中了,所以呼叫的速度要優於建立物件呼叫方法的速度。如何取捨,小夥伴們現在清楚了吧~
關於Java中static方法的一點理解
普通方法是物件的方法,static是類方法。類載入在前,物件例項化在後。1 關於,main方法是static方法,但是為什麼非要是static。原因就是,如果乙個類它定義了main方法的話,那麼她的main方法會在這個類的建構函式執行之前被呼叫。由於main方法執行的時候尚未在jvm裡生成相應物件 ...
關於Java中的static關鍵字
static 主要修飾一下四種情況 變數 所謂 class variable 方法 所謂 class method 塊 所謂 block 內部類 所謂 nested class 凡是被 static 修飾的這四種元素,都屬於class的元素,即類的,而不是類的例項的。1.靜態變數 靜態變數被該類的所...
了解Java中的Static
class person string name double money 如果我們有10個人,每個人錢包,裡面有5元錢。person 張三 new person 張三花掉5元錢後,自己的錢包就沒有錢了,而其它9個人的錢都沒有發生變化,因為個人都有自己的錢包。class person string ...