Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
意外的Java文本输出_Java - Fatal编程技术网

意外的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再次打印


关于类和静态初始值设定项的执行顺序的详细说明在这里

变量在静态块之前初始化。