版权声明:欢迎转载,期待指正 https://blog.csdn.net/fighting_sxw/article/details/89739115
public class Test4 {
public static Test4 t1=new Test4();
{
System.out.println("blockA");
}
static {
System.out.println("blockB");
}
public static void main(String[] args) {
Test4 t2=new Test4();
}
}
输出:
blockA
blockB
blockA
分析:
- 创建对象之前 要先加载类,所以先加载Test4这个类
- 类加载需要加载静态属性和执行静态块,所以先创建Test4的对象 t1
- 创建对象需要执行匿名块,所以先打印出blockA
- 继续加载类,执行静态块 打印blockb
- 继续创建t2对象,执行匿名块打印blockA
总结:
匿名块依赖于对象、静态块依赖于类、创建对象之前,需要先加载类
ps:从大佬的抖音直接搬运过来,抖音号:Todaystart,不妥之处,还望指正!