(原)代码块
1 class Demo{ 2 { 3 System.out.println("1、构造块"); 4 } 5 public Demo(){ 6 System.out.println("2、构造方法"); 7 } 8 } 9 10 public class CodeDemo{ 11 public static void main(String[] args) 12 { 13 new Demo(); 14 new Demo(); 15 new Demo(); 16 } 17 }
说明构造块优于构造方法执行,而且每次实例化对象时都会执行构造块中的代码,会执行多次。
2、静态代码块
1 class Demo{ 2 { 3 System.out.println("1、构造块"); 4 } 5 static{ 6 System.out.println("0、静态构造块"); 7 } 8 public Demo(){ 9 System.out.println("2、构造方法"); 10 } 11 } 12 13 public class CodeDemo{ 14 static{ 15 System.out.println("在主方法所在类中定义的代码块"); 16 } 17 public static void main(String[] args) 18 { 19 new Demo(); 20 System.out.println("我我我我我我"); 21 new Demo(); 22 new Demo(); 23 } 24 }
说明静态代码块优先于主方法执行,而在类中定义的静态代码块优于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。
路漫漫其修远兮,吾将上下而求索