示範類StaticTest.java
public class StaticTest {
{//只有當創建對象的時候執行
System.out.println("H1");
}
static {//加載該類就執行,僅一次加載 程序執行中一直使用
System.out.println("H2");
}
StaticTest()
{
System.out.println("H3");
}
static void printhello()
{
System.out.println("H4");
}
public static void main(String[] args) {
System.out.println("1");
StaticTest st;
System.out.println("2");
new StaticTest();
System.out.println("3");
StaticTest.printhello();
System.out.println("4");
StaticTest st2=new StaticTest();
System.out.println("5");
st2.printhello();
}
}
程序執行結果
H2
1
2
H1
H3
3
H4
4
H1
H3
5
H4
知識點:
靜態方法塊在加載該類的時候執行,且只執行一次。static{}
非靜態方法塊在創建對象時執行,創建一次執行一次。{}
靜態方法塊優先於非靜態方法塊執行,方法塊優先於構造方法執行 優先級 static{} > {} > StaticTest(){}