我执行以下代码,看到结果后不知道。
public class Example3 {
//section 01
static int a =checker();
//section 02
static{
System.out.println("inside the block");
}
//section 03
public static int checker(){
System.out.println("from checker");
return 20;
}
//section 04
public static void main(String[] args) {
System.out.println(a);
System.out.println("from main");
}
}
预期输出
from checker
20
from main
实际输出
from checker
inside the block
20
from main
我将代码int分为4部分,例如01部分...来解释问题。
当我们启动Java程序时,我们是从main方法开始的。因此,主要方法在下面。
System.out.println(a); //step 01
System.out.println("from main"); //step 02
主要方法有两个步骤。我会在下面解释我的意思。
步骤01
现在步骤01已完成。
步骤02
我的问题是如何另外打印“在块内”?
当我们启动Java程序时,我们是从main方法开始的。
不,我们不是。包含main
函数的类仍然是Java类。因此,它必须首先由ClassLoader加载和初始化,因此流程为:
处理静态初始化按在文件中出现的顺序在这里:
a
变量=>打印from checker
inside the block
将控件传递给主函数,实际上打印最后两个字符串。