static{}(即static塊),會在類被加載的時候執行且僅會被執行一次,一般用來初始化靜態變量和調用靜態方法,下面我們詳細的討論一下該語句塊的特性及應用。
類加載:Java命令的作用是啟動虛擬機,虛擬機通過輸入流,從磁盤上將字節碼文件(.class文件)中的內容讀入虛擬機,並保存起來的過程就是類加載。
類加載特性 :
*在虛擬機的生命周期中一個類只被加載一次。
*類加載的原則:延遲加載,能少加載就少加載,因為虛擬機的空間是有限的。
*類加載的時機:
1)第一次創建對象要加載類.
2)調用靜態方法時要加載類,訪問靜態屬性時會加載類。
3)加載子類時必定會先加載父類。
4)創建對象引用不加載類.
5) 子類調用父類的靜態方法時
(1)當子類沒有覆蓋父類的靜態方法時,只加載父類,不加載子類
(2)當子類有覆蓋父類的靜態方法時,既加載父類,又加載子類
6)訪問靜態常量,如果編譯器可以計算出常量的值,則不會加載類,例如:public static final int a =123;否則會加載類,例如:public static final int a = math.PI。