小编典典

在使用初始化程序,构造函数和方法调用时,为什么打印语句按此顺序执行?

java

这是我正在运行的代码,此代码的输出为4 2 1 3,有人可以解释为什么按此顺序打印结果。

public class goFuncTest {
        goFuncTest() 
        {
             System.out.print("1 ");                
        } 
        {               
             System.out.print("2 ");            
        } 
        public static void main(String[] args)
        {

            new goFuncTest().go(); 
        } 
        void go()
        { 
             System.out.print("3 ");                
        } 
        static
        { 
            System.out.print("4 ");                 
        }

    }

阅读 275

收藏
2020-11-26

共1个答案

小编典典

根据您最近的问题编辑,您的输出将是4 2
13。首先运行静态初始化程序,然后运行实例初始化程序。如果您有多个相同类型的初始化程序,则它们将按照它们在类中出现的顺序执行。

// static initializer first
static {
  System.out.print("4 ");
}

// then instance initializer
{ 
  System.out.print("2 "); 
}

接下来,构造函数启动,这将为您提供:

goFuncTest() 
{
  System.out.print("1 "); 
}

最后,该方法被调用:

void go()
{ 
  System.out.print("3 "); 
}
2020-11-26