對(duì)Java中的Static的講解(第二部分)
Java Static:作為修飾符, 可以用來(lái)修飾變量、方法、代碼塊(但絕對(duì)不能修飾類(lèi))。
1、修飾變量:
類(lèi)的所有對(duì)象共同擁有的一個(gè)屬性,也稱為類(lèi)變量。這類(lèi)似于C語(yǔ)言中的全局變量。類(lèi)變量在類(lèi)加載的時(shí)候初始化,而且只被初始化一次。在程序中任何對(duì)象對(duì)靜態(tài)變量做修改,其他對(duì)象看到的是修改后的值。因此類(lèi)變量可以用作計(jì)數(shù)器。另外,Java Static變量可以用類(lèi)名直接訪問(wèn),而不必需要對(duì)象。
2、修飾方法:
類(lèi)的所有對(duì)象共同擁有的一個(gè)功能,稱為靜態(tài)方法。靜態(tài)方法也可以用類(lèi)名直接訪問(wèn),而不必需要對(duì)象。所以在靜態(tài)方法里不能直接訪問(wèn)非靜態(tài)變量和非靜態(tài)方法,在Static方法里不能出現(xiàn)this或者super等關(guān)鍵字。
3、修飾Java代碼塊:
用static去修飾類(lèi)里面的一個(gè)獨(dú)立的代碼塊,稱為靜態(tài)代碼塊。靜態(tài)代碼塊在類(lèi)第一次被加載的時(shí)候執(zhí)行,而且只執(zhí)行一次。靜態(tài)代碼塊沒(méi)有名字,因此不能顯式調(diào)用,而只有在類(lèi)加載的時(shí)候由虛擬機(jī)來(lái)調(diào)用。它主要用來(lái)完成一些初始化操作。
4、說(shuō)說(shuō)類(lèi)加載:
JVM在第一次使用一個(gè)類(lèi)時(shí),會(huì)到classpath所指定的路徑里去找這個(gè)類(lèi)所對(duì)應(yīng)的字節(jié)碼文件, 并讀進(jìn)JVM保存起來(lái),這個(gè)過(guò)程稱之為類(lèi)加載。
可見(jiàn),無(wú)論是變量,方法,還是代碼塊,只要用static修飾,就是在類(lèi)被加載時(shí)就已經(jīng)"準(zhǔn)備好了",也就是可以被使用或者已經(jīng)被執(zhí)行。都可以脫離對(duì)象而執(zhí)行。反之,如果沒(méi)有static,則必須通過(guò)對(duì)象來(lái)訪問(wèn)。
【編輯推薦】