实例化的过程
静态和非静态分开处理
使用到静态加载时,静态又分为: 静态变量, 静态代码块, 其中加载顺序是按照类中书写的先后顺序加载的
非静态加载顺序: 按照非静态书写顺序加载/执行
静态方法,实例方法只有在调用的时候才会去执行
当静态加载中遇到需要加载非静态的情况: 先加载非静态再加载静态。
使用new才会涉及到构造方法
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("gouzaokuai");
j = 100;
}
public InitializeDemo(String str) {
System.out.println((k++) + ":" + str + " i=" + i +" n= " + n);
++i;
++n;
}
static {
print("jingtaikuai");
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 n = new InitializeDemo("初始化");
}
}
1:gouzaokuai i=0 n= 0
2:j i=1 n= 1
3:t1 i=2 n= 2
4:gouzaokuai i=3 n= 3
5:j i=4 n= 4
6:t2 i=5 n= 5
7:i i=6 n= 6
8:jingtaikuai i=7 n= 99
9:gouzaokuai i=8 n= 100
10:j i=9 n= 101
11:初始化 i=10 n= 102