初始化顺序:
1 父类static变量,static块。
2 子类static变量,static块。
3 父类变量,初始块。
4 父类构造方法。
5 子类变量,初始块。
6 子类构造方法。
(同一层之间按照代码前后顺序执行。)
通过实验,并不是每次初始化类都会执行以上所有步骤。
1 实例化类(new)得时候全部执行。
(以下其他方法都不执行构造方法。)
2 通过调类static方法的情况只执行前两步。
3 调类得static变量时只执行前两步。
4 调类的static final变量,(赋值计算在运行过程中),会执行前两步。
Java代码
1.public static final int IIOF = (int)Math.random();
public static final int IIOF = (int)Math.random();
5 调类得普通static final变量时(赋值计算在编译过程中)不会初始化类。
如:
Java代码
1.public static final String IOF = "test";
public static final String IOF = "test";
or
Java代码
1.public static final int CAL = 4 + 4;
public static final int CAL = 4 + 4;
6 调用class.forName() 只执行前两步.