静态代码块,在创建实例的时候就会执行. 首先开来看一个实例:
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"); }}
这里没有打印静态代码块,因为类没有被实例化
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 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(); }}