资源描述:
《Java 程序初始化过程详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、[导读]觉得CoreJava在Java初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱。我觉得还是要搞清楚它的过程比较好。所以现在结合我的学习经验写出具体过程。 觉得CoreJava在Java初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱。我觉得还是要搞清楚它的过程比较好。所以现在结合我的学习经验写出具体过程: 过程如下: 1.在类的声明里查看有无静态元素(staticelement,我姑且这么叫吧),比如:
2、 staticintx=1, { //block floatsss=333.3;Stringstr="hello"; } 或者比如 static{ //(staticblock), intx=2; doubley=33.3; } 如果有staticelement则首先执行其中语句,但注意staticelement只执行一次,在第二次创建类的对象的时候,就不会去执行staticelement的语句. 2.查看此类是否为启动运行类,若为启动运行类,则执行main()方法里的语句
3、对应语句 3.若不是启动运行类,则按代码的排版先后顺序继续执行非staticelement的变量赋值以及代码块. 4.最后执行构造方法,如果在被调用的构造方法里面有this关键字(注意,如果你考虑要调用其他构造方法,则应该把this写在最前面,不然会产生错误),则先调用相应构造方法主体,调用完之后再执行自己的剩下语句. /***//** * *@authorlivahu *Createdon2006年9月6日,下午17:00 */ classFirstClass...{ Firs
4、tClass(inti)...{ System.out.println("FirstClass("+i+")"); } voiduseMethod(intk)...{ System.out.println("useMethod("+k+")"); } } classSecondClass...{ staticFirstClassfc1=newFirstClass(1); FirstClassfc3=newFirstClass(3); static...{ FirstClass
5、fc2=newFirstClass(2); } ...{ System.out.println("SecondClass'sblock,thisblockisnotstaticblock."); } SecondClass()...{ System.out.println("SecondClass()"); } FirstClassfc4=newFirstClass(4); } publicclassInitiationDemo...{ SecondClasssc1=newS
6、econdClass(); ...{ System.out.println("HelloJavaWorld!"); } publicstaticvoidmain(String[]args)...{ System.out.println("Insidemain()"); SecondClass.fc1.useMethod(100); InitiationDemoidObj=newInitiationDemo(); } staticSecondClasssc2=newSecondCl
7、ass(); } 运行结果: FirstClass(1) FirstClass(2) FirstClass(3) SecondClass'sblock,thisblockisnotstaticblock. FirstClass(4) SecondClass() Insidemain() useMethod(100) FirstClass(3) SecondClass'sblock,thisblockisnotstaticblock. FirstClass(4) Seco
8、ndClass() HelloJavaWorld!