在看static关键字的时候看到了一个有关 static块 构造函数 main方法 父类的执行顺序的问题,之前面试的时候投机取巧给背了下来 也没理解清楚,今天又拿来分析了下,从jvm上分析这个问题
public class Test extends Base{
//静态代码块
static{
System.out.println("test static");
}
//构造代码块
{
System.out.println("test block");
}
//构造函数
public Test(){
System.out.println("test constructor");
}
//main方法
public static void main(String[] args) {
System.out.println("start main");
new Test();
}
}
class Base{
static{
System.out.println("base static");
}
{
System.out.println("base block");
}
public Base(){
System.out.println("base constructor");
}
}
先把答案放出来
base static
test static
start main
base block
base constructor
test block
test constructor