一、什么是代码块
在Java中,使用{}括起来的代码被称为代码块。根据所处位置不同,分为局部代码块,静态代码块和构造代码块
-
- 局部代码块:在方法中出现;限定变量生命周期,及早释放,提高内存利用率
- 构造代码块 (初始化块):在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
- 静态代码块:在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
- 一般用于加载驱动
1 package Day01; 2 3 public class Test1 { 4 5 public static void main(String[] args) { 6 Zi zi = new Zi(); 7 } 8 } 9 10 class Fu{ 11 static { 12 System.out.println("父类静态代码块"); 13 } 14 { 15 System.out.println("父类构造代码块"); 16 } 17 public Fu(){ 18 System.out.println("父类构造方法"); 19 } 20 } 21 22 class Zi extends Fu{ 23 static { 24 System.out.println("子类静态代码块"); 25 } 26 public Zi(){ 27 System.out.println("子类构造方法"); 28 } 29 { 30 System.out.println("子类构造代码块"); 31 } 32 }
根据这个例题来看运行顺序:先进行父类初始化,再进行子类初始化,静态代码在方法区中的静态区完成,所以在其他代码执行前最先完成
由此可得,此代码运行结果为
父类静态代码块
子类静态代码块
父类构造代码块
父类构造方法
子类构造代码块
子类构造方法