static關(guān)鍵字我理解為“類級別的修飾符”都哭,其實(shí)就是你可以理解為秩伞,只要是用static修飾的變量逞带、屬性、內(nèi)部類纱新、代碼塊等展氓,都是類級別的,不與某個(gè)對象關(guān)聯(lián)怒炸,是整個(gè)類共有的带饱。所以在使用的時(shí)候也不需要通過對象,只需要通過類名點(diǎn)靜態(tài)屬性就可以阅羹。
1勺疼、static修飾類
static關(guān)鍵字修飾類只有一種情況,就是靜態(tài)內(nèi)部類捏鱼。靜態(tài)內(nèi)部類其實(shí)與普通類沒有什么區(qū)別执庐,只是靜態(tài)內(nèi)部類在頂級類(外層的類,這種類的類名必須與文件名一致)的內(nèi)部已定義导梆。使用靜態(tài)內(nèi)部類的時(shí)候與不同類一樣轨淌,也需要?jiǎng)?chuàng)建對象。靜態(tài)內(nèi)部類與內(nèi)部類一樣可以訪問外部類的屬性包括private修飾的私有屬性看尼。
2递鹉、static修飾變量和方法
static修飾的成員變量和成員方法習(xí)慣上稱為靜態(tài)變量和靜態(tài)方法,可以直接通過類名來訪問藏斩,訪問語法為:類名.靜態(tài)方法名(參數(shù)列表…)/類名.靜態(tài)變量名
靜態(tài)方法只能訪問靜態(tài)成員躏结,實(shí)例方法可以訪問靜態(tài)和實(shí)例成員。之所以不允許靜態(tài)方法訪問實(shí)例成員變量狰域,是因?yàn)閷?shí)例成員變量是屬于某個(gè)對象的媳拴,而靜態(tài)方法在執(zhí)行時(shí),并不一定存在對象兆览。靜態(tài)方法中也不能使用關(guān)鍵字this屈溉。
靜態(tài)變量則是類級別的變量所以在一個(gè)對象中修改會影響到其他使用的對象。
3抬探、static修飾代碼塊
用static修飾的代碼塊表示靜態(tài)代碼塊子巾,當(dāng)Java虛擬機(jī)(JVM)加載類時(shí),就會執(zhí)行該代碼塊也就是說被靜態(tài)代碼塊包圍的代碼會在類被JVM加載的時(shí)候調(diào)用(可以進(jìn)行一些特殊需求的操作)小压,當(dāng)然砰左,靜態(tài)代碼塊內(nèi)部的代碼只能使用靜態(tài)屬性。
4场航、static和final一塊用表示什么
static final用來修飾成員變量和成員方法,可簡單理解為“全局常量”廉羔!
對于變量溉痢,表示一旦給值就不可修改僻造,并且通過類名可以訪問。
對于方法孩饼,表示不可覆蓋髓削,并且可以通過類名直接訪問。