類加載:能不加載就不加載
只會加載一次
加載子類會先加載父類
new對象時
訪問類的靜態成員
訪問父類不會加載子類
訪問公開靜態常量如果編譯時能決定此常量的值則不會類加載;編譯時不能決定此常量的值則會類加載。
靜態代碼塊,在虛擬機加載類的時候就會加載執行,而且只執行一次;
非靜態代碼塊,在創建對象的時候(即new一個對象的時候)執行,每次創建對象都會執行一次
package test;
public class TestStatic_Dynamic_Block {
static String name;
final static int id = 5;
{
System.out.println("dynamic block");
}
static
{
System.out.println("static block");
}
void m1()
{
System.out.println("m1 method start work ...");
}
public static void main(String[] args) {
System.out.println(TestStatic_Dynamic_Block.id);
System.out.println(TestStatic_Dynamic_Block.name);
name = "haha";
System.out.println(TestStatic_Dynamic_Block.name);
new TestStatic_Dynamic_Block();
}
}