静态代码块、代码块、构造函数执行顺序
- 静态代码块中的代码会在类加载JVM时运行,且只被执行一次
- 执行构造函数之前,执行代码块
- new对象,执行构造函数
测试1
public class T { { System.out.println("《执行构造函数之前,执行代码块》"); } static { System.out.println("【静态代码块中的代码会在类加载JVM时运行,且只被执行一次】"); } T(){ System.out.println("new对象,执行构造函数"); } public static void main(String[] args) { T t = new T(); t = new T(); t = new T(); } }
测试2
public class T { static { System.out.println("1链接准备阶段为类变量分配内存设置默认初始值" + "\n2类的初始化类变量和静态代码块中的代码合并"); i = 200; } static int i = 100; public static void main(String[] args) { //【1链接准备阶段为类变量分配内存设置默认初始值 2类的初始化类变量和静态代码块中的代码合并 100】 System.out.println(i); } }