- 调用静态代码块和静态属性初始化
静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用 - 调用普通代码块和普通属性的初始化
普通代码块和普通属性初始化调用的优先级一样,如果有多个普通代码块和多个普通变量初始化,则按他们定义的顺序调用 - 调用构造器
public class StaticTest01 {
public static void main(String[] args) {
System.out.println(M.n1);
System.out.println(M.n2);
M m = new M();
System.out.println(m.n3);
System.out.println("================");
M m1 = new M(9);
}
}
class M {
public static int n1 = 10;
static {
System.out.println("静态代码块被调用1");
}
public static int n2 = 30;
static {
System.out.println("静态代码块被调用2");
}
{
System.out.println("非静态代码块被调用1");
}
public int n3 = 80;
{
System.out.println("非静态代码块被调用2");
}
public M() {
System.out.println("无参构造器被调用");
}
public M(int n3) {
System.out.println("有参构造器被调用");
}
}
输出结果:
静态代码块被调用1
静态代码块被调用2
10
30
非静态代码块被调用1
非静态代码块被调用2
无参构造器被调用
80
================
非静态代码块被调用1
非静态代码块被调用2
有参构造器被调用