Java中,静态初始化块、初始化块、构造函数三者都用来完成类的初始化工作,,在实际编程中可以根据不同的需要使用不同的初始化方式,以下为三者的代码格式及Java虚拟机对三者的执行顺序分析。
先看一程序:
package org.zeroup; class Blocks {static {System.out.println("父类静态初始化块");}{System.out.println("父类初始化块");}Blocks() {System.out.println("父类构造函数");}} public class InitailizeBlocks extends Blocks {static {System.out.println("子类静态初始化块");}{System.out.println("子类初始化块");}public InitailizeBlocks() {System.out.println("子类构造函数");}public static void main(String[] args) {new InitailizeBlocks();}}
输出结果:
1
2
3
4
5
6
父类静态初始化块
子类静态初始化块
父类初始化块
父类构造函数
子类初始化块
子类构造函数
分析:
静态代码块在类加载时被执行,而非静态代码(包括初始化代码块和构造函数)在生成对象时才被执行,故父类和子类的静态初始化代码块最早执行;初始化块与构造函数的执行顺序,前者要早于后者。
呼唤你前往另一个地方,过上另一种生活。