靜態代碼塊,在建立實例的時候就會執行. 首先開來看一個實例:java
1.誤區測試
class MyClass1 { static {//靜態塊 System.out.println("static block "); } } public class Main { Class[] classArray = { MyClass1.class//這樣引用該類,必然須要將該類加載到虛擬機中 }; public static void main(String[] args){ System.out.println("hello word"); } }
這裏沒有打印靜態代碼塊,由於類沒有被實例化code
2.實例化以後虛擬機
class MyClass1 { static {//靜態塊 System.out.println("static block "); } } public class Main { Class[] classArray = { MyClass1.class//這樣引用該類,必然須要將該類加載到虛擬機中 }; public static void main(String[] args){ System.out.println("hello word"); MyClass1 class1=new MyClass1(); } }
3.繼續測試class
class MyClass1 { static {//靜態塊 System.out.println("static block "); } } public class Main { static {//靜態塊 System.out.println("static block2 "); } Class[] classArray = { MyClass1.class//這樣引用該類,必然須要將該類加載到虛擬機中 }; public static void main(String[] args){ System.out.println("hello word"); MyClass1 class1=new MyClass1(); } }