package com.qcby.classTest;
public class InitializeDemo {
private static int k = 1;
private static InitializeDemo t1 = new InitializeDemo("t1");
private static InitializeDemo t2 = new InitializeDemo("t2");
private static int i = print("i");
static {
print("静态块");
n=100;
}
private static int n = 99;
{
print("构造块");
j=100;
}
public InitializeDemo(String str) {
System.out.println((k++) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
}
private int j = print("j");
public static int print(String str) {
System.out.println((k++) + ":" + str + " i=" + i + " n=" + n);
++n;
return ++i;
}
public static void main(String[] args) {
InitializeDemo n =new InitializeDemo("初始化");
}
}
运行结果:
解析:
main方法中创建该类对象的时候,先加载静态的部分,从上往下执行,先加载k=1,然后又加载t1和t2,t1和t2new了一个新的对象,分别执行了构造块和成员变量部分和构造方法,执行完毕之后加载i,然后在加载静态块,然后在加载main方法中创建的对象构造块,然后在加载j和构造方法