意外的Java文本输出
当我运行此代码时,它输出意外的Java文本输出,java,Java,当我运行此代码时,它输出blockA blockB blockA 我希望输出是blockB blockA blockA 为什么输出是blockA blockB blockA,而不是blockB blockA blockA public class Test { public static Test t1 = new Test(); { System.out.println("blockA"); } static { Syst
blockA blockB blockA
我希望输出是blockB blockA blockA
为什么输出是blockA blockB blockA
,而不是blockB blockA blockA
public class Test
{
public static Test t1 = new Test();
{
System.out.println("blockA");
}
static
{
System.out.println("blockB");
}
public static void main(String[] args)
{
Test t2 = new Test();
}
}
在课堂上,你们先把下面的陈述放在第一位
public static Test t1 = new Test();
所以它将是执行类初始值设定项
{
System.out.println("blockA");
}
因此将打印块A
然后执行静态初始值设定项
static
{
System.out.println("blockB");
}
并打印块B
最后执行主函数中的代码
Test t2 = new Test();
这将再次触发类初始值设定项
{
System.out.println("blockA");
}
因此,块A再次打印
关于类和静态初始值设定项的执行顺序的详细说明在这里变量在静态块之前初始化。