在静态成员中有执行的命令吗?

问题描述 投票:1回答:1

我执行以下代码,看到结果后不知道。

 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

  1. 转到第01节。
  2. 然后进入检查器方法(第03节)
  3. 然后打印“来自检查器”
  4. 然后现在“ a”将采用检查器的返回值方法(a = 20)。

现在步骤01已完成。

步骤02

  1. 将打印“ from main”

我的问题是如何另外打印“在块内”

java static
1个回答
1
投票

当我们启动Java程序时,我们是从main方法开始的。

不,我们不是。包含main函数的类仍然是Java类。因此,它必须首先由ClassLoader加载和初始化,因此流程为:

  1. 将类加载到内存中
  2. 处理静态初始化按在文件中出现的顺序在这里:

    1. a变量=>打印from checker
    2. 静态块=>打印inside the block
  3. 将控件传递给主函数,实际上打印最后两个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.