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