快速业务通道

Java程序初始化过程详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21

Java程序初始化过程详解

时间:2011-01-05

觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱。我觉得还是要搞清楚它的过程比较好。所以现在结合我的学习经验写出具体过程:

过程如下:

1.在类的声明里查看有无静态元素(static element, 我姑且这么叫吧),比如:

static int x = 1, {  //block  float sss = 333.3; String str = "hello"; }

或者 比如

static {  //(static block),  int x = 2;  double y = 33.3; }

如果有static element则首先执行其中语句,但注意static element只执行一次,在第二次创建类的对象的时候,就不会去执行static element的语句.

2.查看此类是否为启动运行类,若为启动运行类,则执行main()方法里的语句对应语句

3.若不是启动运行类,则按代码的排版先后顺序继续执行非static element的变量赋值以及代码块.

4.最后执行构造方法,如果在被调用的构造方法里面有this关键字(注意,如果你考虑要调用其他构造方法,则应该把this写在最前面,不然会产生错误),则先调用相应构造方法主体,调用完之后再执行自己的剩下语句.

/** *//** * * @author livahu * Created on 2006年9月6日, 下午17:00 */ class FirstClass ...{  FirstClass(int i) ...{   System.out.println("FirstClass(" + i + ")");  }  void useMethod(int k) ...{   System.out.println("useMethod(" + k + ")");  } } class SecondClass ...{  static FirstClass fc1 = new FirstClass(1);  FirstClass fc3 = new FirstClass(3);  static ...{   FirstClass fc2 = new FirstClass(2);  }  ...{   System.out.println("SecondClass''s block, this block is not static block.");  }  SecondClass() ...{   System.out.println("SecondClass()");  }  FirstClass fc4 = new FirstClass(4); } public class InitiationDemo ...{  SecondClass sc1 = new SecondClass();  ...{   System.out.println("Hello Java World!");  }  public static void main(String[] args) ...{   System.out.println("Inside main()");   SecondClass.fc1.useMethod(100);   InitiationDemo idObj = new InitiationDemo();  }  static SecondClass sc2 = new SecondClass(); }

运行结果:

FirstClass(1) FirstClass(2) FirstClass(3) SecondClass''s block, this block is not static block. FirstClass(4) SecondClass() Inside main() useMethod(100) FirstClass(3) SecondClass''s block, this block is not static block. FirstClass(4) SecondClass() Hello Java World!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号