开发者社区> 问答> 正文

请说明我的程序的执行顺序

我试图了解我的代码的调用顺序。有人,请说明通话顺序。

public class MainWithStaticCalls
{
    static
    {
        String[] str = {"1", "2"};
        System.out.println("Static");
        main(str);
    }
    {
        System.out.println("Init block");
    }
    void MainWithStaticCalls()
    {
        System.out.println("constructor");
    }
    public static void main(String[] a)
    {
        MainWithStaticCalls obj = new MainWithStaticCalls();
        NewClass nc = new NewClass();
        nc.callMe();
        System.out.println("Main");
    }

}

class NewClass
{
    public void callMe()
    {
        System.out.println("I'm called");
    }
}

据我了解,静态块将在JVM开始执行后立即执行,甚至在主类之前也将执行。然后实例init块将被执行。然后构造函数应该被执行。但是,如果我们从静态字段中调用main方法,则回调的工作方式。哪个主体将首先执行,JVM正常执行的主体或静态字段显式调用的主体。

My output:
Static
Init block
I'm called
Main
Init block
I'm called
Main

PS:我已经修改了我的问题。之前我将普通方法与构造函数混淆,因此一些答案可能看起来无关紧要,但这确实有助于我理解问题。

展开
收起
垚tutu 2019-12-26 21:16:25 1360 0
1 条回答
写回答
取消 提交回答
  • 精于基础,广于工具,熟于业务。

    会先执行函数体自身的输入输出,然后才执行的别的

    2019-12-27 19:24:23
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
fibjs 模块重构从回调到协程 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载
低代码开发师(初级)实战教程 立即下载