class Demo03 {
public static void main(String[] args) {
A.show();
}
}
class A {
//构造方法
A(){
System.out.println("构造方法执行");
System.out.println(b);
System.out.println(c);
}
static A a=new A();
static int b=10;
int c=20;
//静态方法
public static void show(){
System.out.println("静态方法执行");
System.out.println(b);
}
//静态代码块
static {
System.out.println("静态代码块执行");
System.out.println(b);
}
//非静态代码块
{
System.out.println("非静态代码块执行");
System.out.println(b);
System.out.println(c);
}
//非静态方法
public void show2(){
System.out.println("非静态方法执行");
System.out.println(b);
System.out.println(c);
}
}
程序执行结果是:
非静态代码块执行
0
20
构造方法执行
0
20
静态代码块执行
10
静态方法执行
10
不太理解为什么非静态代码块会先执行。
希望有前辈能告知一下这个程序的执行顺序过程 谢谢。