- 首先进如main;
- 加载类,开始执行静态数据;
- 初始化k的值;
- 进入new对象的过程;
- 首先执行所有的实例部分。还没有初始化的静态部分为默认值
- 初始化完剩余的静态数据;
首先加载类时确实会先加载静态部分。在类内部还有本身的对象则到达时开始执行实例部分;
/**
* @ClassName TRRest
* @Description TODO
* @Author heaboy@heaboy.com
* @Version 1.0.0
*/
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");
private static int n = 99;
{
print("初始化块");
j=100;
}
public InitializeDemo(String str) {
System.out.println((k++) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
}
static {
print("静态块");
n=100;
}
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 test = new InitializeDemo("test");
}
}