static代码执行顺序分析
这是一道关于static关键字的问题,涉及到类文件加载时static内容的加载顺序,以及静态代码块,与构造代码块的相关内容。
public class StaticDemo {
public class StaticDemo {
static StaticDemo staticDemo1 = new StaticDemo();
static StaticDemo staticDemo2 = new StaticDemo();
static {
System.out.println("静态代码块");
}
{
System.out.println("构造代码块");
}
public StaticDemo() {
System.out.println("构造方法");
}
public static void main(String[] args) {
StaticDemo staticDemo = new StaticDemo();
}
}
要解决这道题目,首先要回顾一下以下知识点:
1.直接在类中定义且没有加static关键字的代码块称为{}构造代码块,无论执行哪个构造方法,都会先执行构造代码块。
2.静态代码块在类文件加载过程中一定执行,并且只执行一次。
3.类文件的加载阶段会加载所有的static内容,但是会有基本的先后顺序。
代码执行流程
代码执行结果