关于Java中初始化顺序的问题
来源:互联网 发布:数据库业务流程图 编辑:程序博客网 时间:2024/05/08 10:09
在遇到关于Java考试内容的时候总会避免不了一些初始化顺序的问题,究竟是谁先被初始化,在Think in Java 中作者是这样阐述的,希望对迷茫的人有帮助。
初始化的顺序是首先static(如果它们尚未由前一次对象创建过程初始化),接着是非static 对象。大家
可从输出结果中找到相应的证据。
在这里有必要总结一下对象的创建过程。请考虑一个名为Dog 的类:
(1) 类型为Dog 的一个对象首次创建时,或者Dog 类的static 方法/static 字段首次访问时,Java 解释器
必须找到Dog.class(在事先设好的类路径里搜索)。
(2) 找到Dog.class 后(它会创建一个Class 对象,这将在后面学到),它的所有static 初始化模块都会运
行。因此,static 初始化仅发生一次——在Class 对象首次载入的时候。
(3) 创建一个new Dog()时,Dog 对象的构建进程首先会在内存堆(Heap)里为一个Dog 对象分配足够多的存
储空间。
(4) 这种存储空间会清为零,将Dog 中的所有基本类型设为它们的默认值(零用于数字,以及boolean 和
char 的等价设定)。
(5) 进行字段定义时发生的所有初始化都会执行。
(6) 执行构建器。正如第6 章将要讲到的那样,这实际可能要求进行相当多的操作,特别是在涉及继承的时
候。
- 关于Java中初始化顺序的问题
- 关于java的初始化顺序的问题
- 关于java的初始化顺序
- 关于c++的类中成员变量初始化问题+初始化列表中对应顺序问题!
- 关于Java变量初始化顺序问题实践
- java中初始化的顺序
- JAVA中初始化的顺序
- 关于C++中类的初始化列表中初始化变量顺序问题
- Java中初始化基类的顺序问题1
- Java中初始化基类的顺序问题2
- 关于类成员的初始化顺序问题
- 关于静态数据的初始化顺序问题
- Java中类成员初始化顺序问题
- 关于JAVA静态初始化块,初始化块,构造器调用顺序的问题
- 关于java初始化顺序的一个示例
- Java关于继承的详细初始化顺序
- 关于java类初始化的顺序
- 关于JAVA类的初始化顺序
- C++学习第14篇-I/O流
- 项目总结—从零开始(5)
- C++学习第15篇-函数模板
- KWIC
- 软件无线电设计中ASIC、FPGA和DSP的选择策略
- 关于Java中初始化顺序的问题
- Struts2的第一个应用实例
- VMWare8运行Mac OS Lion时安装VMTools的问题
- 动态设置线程数量的例子
- win7下设置cmd操作mysql的环境变量
- UML建模——Rational Rose实验收获
- WCF 身份验证 通过检查客户端IP
- Struts2常量介绍及说明
- *printf()格式化串安全漏洞分析(下) (转)