Java手記——static

1、static變量

靜態(tài)變量在內(nèi)存中只有一個拷貝(節(jié)省內(nèi)存)

在加載類的過程中完成靜態(tài)變量的內(nèi)存分配,可用類名直接訪問(方便),當(dāng)然也可以通過對象來訪問(但是這是不推薦的)

所以一般在需要實(shí)現(xiàn)以下兩個功能時使用靜態(tài)變量:

  • [x] 在對象之間共享值時
  • [x] 方便訪問變量時

2、static靜態(tài)方法

靜態(tài)方法可以直接通過類名調(diào)用,任何的實(shí)例也都可以調(diào)用。

不能用this和super關(guān)鍵字,只能訪問所屬類的靜態(tài)成員變量和成員方法。。

靜態(tài)方法是類內(nèi)部的一類特殊方法,只有在需要時才將對應(yīng)的方法聲明成靜態(tài)的,一個類內(nèi)部的方法一般都是非靜態(tài)的

了方便方法的調(diào)用會聲明為static

3、static代碼塊

獨(dú)立于類成員的static語句塊,可以有多個,位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時會執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個,JVM將按照它們在類中出現(xiàn)的先后順序依次執(zhí)行它們,每個代碼塊只會被執(zhí)行一次。

4、static final 修飾成員變量和成員方法

可簡單理解為“全局常量”

對于變量,表示一旦給值就不可修改,并且通過類名可以訪問。

對于方法,表示不可覆蓋,并且可以通過類名直接訪問。

5、static靜態(tài)類

如果一個類要被聲明為static的,只有一種情況,就是靜態(tài)內(nèi)部類

1.靜態(tài)內(nèi)部類跟靜態(tài)方法一樣,只能訪問靜態(tài)的成員變量和方法

2.靜態(tài)內(nèi)部類可以聲明普通成員變量和方法

3.靜態(tài)內(nèi)部類可以單獨(dú)初始化:

使用場景

  1. 內(nèi)部類初始化無需實(shí)例化外部類;

  2. 當(dāng)某個類需要接受多個參數(shù)進(jìn)行初始化時,推薦使用靜態(tài)類Builder構(gòu)建。

6、import static和import的區(qū)別

一般我們導(dǎo)入一個類都用 import com.....ClassName;

而靜態(tài)導(dǎo)入是這樣:import static com.....ClassName.;

這里的多了個static,還有就是類名ClassName后面多了個 . ,意思是導(dǎo)入這個類里的靜態(tài)方法。當(dāng)然,也可以只導(dǎo)入某個靜態(tài)方法,只要把 .* 換成靜態(tài)方法名就行了。然后在這個類中,就可以直接用方法名調(diào)用靜態(tài)方法,而不必用ClassName.方法名 的方式來調(diào)用。

同理也可以導(dǎo)入靜態(tài)變量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容