編譯時常量在編譯階段會寫死到.class中
而且會存入到 呼叫這個常量的方法所在的類的常量池中
如下**編譯後 刪除parents01.class 後依然可以正常執行
public class mytest01 }class parents01
}//out:parents01 const value
說明value被寫入了mytest01中
執行時常量:(編譯時不載入,類初始化時才載入)
public class mytest01 }class parents01
}//out:parents01 const value
另外 用子類呼叫父類的 static欄位 並不會初始化子類static域
具體**如下
public class mytest01 }this is parents01 static blockclass parents01
}class children01 extends parents01
}//~out:
parents01 const value
將value修改為final 則 乙個static域都不執行。
static域在static欄位後初始化,父類先於子類初始化:
public class mytest01 }class parents01
}class children01 extends parents01
}class sub01
}//~out:
this is sub01
this is parents01 static block
this is children01 static block
Java類載入的執行順序
那一年,呼延十又回想起被載入順序支配的恐懼,筆試題上,好幾個類,幾個方法,幾個輸出語句,讓你按照順序寫出輸出.我真的是有一句 但是呢,我們還是有了解一下的必要的,在編碼過程中有許多的應用.經常用來比較順序的,無非就是靜態 塊,普通 塊,靜態方法和普通方法.這裡直接說一下結論 先靜態後普通最後構造方法...
類的載入和執行順序
class ali private static int n 99 public ali string s private static int print string s public static void main string args 1 構造塊 i 0 n 0 2 t1 i 1 n 1...
java中類的載入,及執行順序
類載入的順序 1 載入靜態成員 塊 靜態變數 靜態塊按書寫先後順序執行 先遞迴地載入父類的靜態成員 塊 object 的最先 再依次載入到本類的靜態成員。同乙個類裡的靜態成員 塊,按寫 的順序載入。如果其間呼叫靜態方法,則呼叫時會先執行靜態方法,再繼續載入。同乙個類裡呼叫靜態方法時,可以不理會寫 的...