static
作用:
- 為某特定數(shù)據(jù)類型或?qū)ο蠓峙鋯我坏拇鎯?chǔ)空間啄寡,而
與創(chuàng)建對(duì)象的個(gè)數(shù)無(wú)關(guān)豪硅。 - 實(shí)現(xiàn)某個(gè)方法或?qū)傩耘c類而不是對(duì)象關(guān)聯(lián)在一起,也就是說(shuō)在不創(chuàng)建對(duì)象的情況下就可以通過(guò)類來(lái)直接調(diào)用方法或使用類的屬性这难。
特點(diǎn):
1) 隨著類的加載而加載舟误,優(yōu)先于對(duì)象存在,靜態(tài)方法中沒(méi)有this關(guān)鍵字
2) 被類的所有對(duì)象共享(判斷是否使用靜態(tài)關(guān)鍵字的條件)
3) 可以通過(guò)類調(diào)用
4) 靜態(tài)方法只能訪問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法姻乓;
5) 靜態(tài)的內(nèi)容存在于方法區(qū)的靜態(tài)區(qū)
在Java語(yǔ)言中嵌溢,static主要有4種使用情況:成員變量、成員方法蹋岩、代碼塊和內(nèi)部類赖草。
-
靜態(tài)變量 = static+成員變量(局部變量不可以使用static修飾)
-
對(duì)靜態(tài)變量的引用有2種方式:
類.靜態(tài)變量 或 對(duì)象.靜態(tài)變量
-
-
靜態(tài)方法 = static + 成員方法
-
對(duì)靜態(tài)變量的引用有2種方式:
類.靜態(tài)方法 或 對(duì)象.靜態(tài)方法
靜態(tài)方法中不能使用this和super關(guān)鍵字,不能調(diào)用非static方法剪个,只能訪問(wèn)所屬類的靜態(tài)變量和靜態(tài)方法
單例模式中對(duì)外暴露對(duì)象使用的方法就是static修飾的
-
靜態(tài)代碼塊 = static + 代碼塊
靜態(tài)代碼塊在類中是獨(dú)立于成員變量和成員函數(shù)的代碼塊的秧骑。它不在任何一個(gè)方法體內(nèi),JVM在加載類時(shí)會(huì)執(zhí)行static代碼塊扣囊,如果有多個(gè) static代碼塊乎折,JVM將會(huì)按順序來(lái)執(zhí)行。 static代碼塊經(jīng)常被用來(lái)初始化靜態(tài)變量侵歇。需要注意的是骂澄,這些 static代碼塊只會(huì)被執(zhí)行一次靜態(tài)內(nèi)部類 = static + 內(nèi)部類
static內(nèi)部類是指被聲明為 static的內(nèi)部類,它可以不依賴于外部類實(shí)例對(duì)象而被實(shí)例化惕虑,而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化坟冲。靜態(tài)內(nèi)部類不能與外部類有相同的名字,不能訪問(wèn)外部類的普通成員變量溃蔫,只能訪問(wèn)外部類中的靜態(tài)成員和靜態(tài)方法(包括私有類型)
注意:
用 public修飾的 static變量和方法本質(zhì)上都是全局的健提,若在static變量前用private修飾則表示這個(gè)變量可以在類的靜態(tài)代碼塊或者類的其他靜態(tài)成員方法中使用,但是不能在其他類中通過(guò)類名來(lái)直接引用伟叛。