gpt4 book ai didi

java - 意外的 Java 文本输出

转载 作者:行者123 更新时间:2023-11-30 02:24:26 25 4
gpt4 key购买 nike

当我运行此代码时,它输出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");
}

因此blockA将被打印。

然后执行静态初始化程序

   static
{
System.out.println("blockB");
}

并打印blockB

最后执行main函数中的代码

 Test t2 = new Test();

这将再次触发类初始值设定项

{
System.out.println("blockA");
}

因此再次打印blockA

关于类和静态初始化器的执行顺序的详细描述在这里 jls-12.4.2

关于java - 意外的 Java 文本输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com