public class Book{
public static void main(String[] args) {
System.out.println("执行main方法");
}
static{
System.out.println("执行static代码块");
}
}输出结果:执行static代码块
          执行main方法
为什么是先执行static然后再执行main方法?运行的原理是什么?

解决方案 »

  1.   

    class loader -> main()
      

  2.   

    static代码段,在这个类第一次被实例化的时候执行到,然后才会执行main()。附:初始化顺序:静态初始化块>初始化块>构造器 
      

  3.   

    是不是加载类的时候就会执行static代码段啊
      

  4.   

    加载类的时候就会执行static代码段
      

  5.   

    :静态初始化块>初始化块>构造器 static 是程序加载类的时候就会运行了。
      

  6.   

    还是比较乱,我能不能这样理解,有static的类或者块都是最先被加载的???
      

  7.   

    加载的时候就会执行static块,main()是运行时才执行
      

  8.   

    加载类的时候就会执行static代码段,main()方法是java程序的入口,但执行时不一定会从main()方法开始,如果里面有静态方法的话,会先执行里面的静态方法,当然这会抛出异常,如果在里面加入异常处理,你就可以看到其实程序并没有真正的从main()方法开始执行,而是先执行或初始化里面的静态方法,你可以试着在里面加入一条输出,再把异常捕获,它能正常执行并能看到输出,试试吧Thank you in advance for giving me credits。
      

  9.   

    是java的运行机制,加载一个类时,先加载static的内容,并为static初始化。执行顺序是按在类里面定义的顺序执行。而main()方法是在类运行时才执行的。