就结合代码通过调试的方法来分析一下main入口函数以后程序的方法如下: class Show { static{ System.out.println("i am static ");//第二步 } { System.out.println("i am not static");//第五步 } private static int i=10;//第三步 public static void myShow() { System.out.println("i am myShow");//没有被执行 } private int j=100;//第六步 public void weShow() { System.out.println("i am weyShow");//第七步 } private Show(){ System.out.println("i am grut"); }; private static final Show sh=new Show();//第四步 public static Show getShow()//第八步 { return sh; } } public class DD{ public static void main(String[] arg) { Show.getShow();//第一步 } } 由代码调试验证可知,程序的运行步骤如下: [size=12.0000pt]1、从程序入口main函数顺序执行。 [size=12.0000pt]2、在顺序执行过程中碰到其他类的调用时,就先执行该类的静态代码块。 [size=12.0000pt]3、执行完静态代码块后,再依次执行该类的静态属性。 [size=12.0000pt]4、执行完该类的静态属性之后,再执行该类的代码块。 [size=12.0000pt]5、执行完该类的代码块在依次执行该类的非静态属性。 [size=12.0000pt]6、执行完该类的非静态属性,在执行该类的构造方法。 [size=12.0000pt]7、执行完该类的构造方法,在执行main函数调用该类的方法。 [size=12.0000pt]8、该类没有被调用的方法,则不会被执行。
|