一个类从加载到生成一个对象的过程中,其内部代码执行的流程是:静态成员变量声明 --> (静态成员变量显示初始化) --> 构造代码块 --> 构造函数。
class TestLoad1 {
String s = "1";
static TestLoad1 t = new TestLoad1();
static{
System.out.println("静态代码块执行");
}
{
System.out.println("构造代码块执行");
}
public TestLoad1() {
System.out.println("无参构造函数执行");
}
public TestLoad1(String s) {
System.out.println("有参构造函数执行");
}
}
public class TestLoad {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("Niuke.TestLoad1");
System.out.println();
new TestLoad1();
System.out.println();
new TestLoad1("2");
}
}
输出:
构造代码块执行
无参构造函数执行
静态代码块执行
构造代码块执行
无参构造函数执行
构造代码块执行
有参构造函数执行