从以下代码可以看出,静态代码块先执行与构造函数,但是静态代码块和静态变量之间的执行顺序决定于它们在代码中出现的顺序
public class Test5 {
public static void main(String[] args) {
A a = new A();
System.out.println(A.m);
}
}
class A{
public A(){
System.out.println("A类的无参构造函数");
}
static{
System.out.println("A类静态代码块初始化");
m = 300;
}
static int m = 100;
}
输出结果:
A类静态代码块初始化
A类的无参构造函数
100
public class Test5 {
public static void main(String[] args) {
A a = new A();
System.out.println(A.m);
}
}
class A{
public A(){
System.out.println("A类的无参构造函数");
}
static int m = 100;
static{
System.out.println("A类静态代码块初始化");
m = 300;
}
}
输出结果:
A类静态代码块初始化
A类的无参构造函数
300