您的位置:首页 > 编程语言 > Java开发

关于Java中初始化顺序的问题

2012-03-11 16:01 387 查看
在遇到关于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 章将要讲到的那样,这实际可能要求进行相当多的操作,特别是在涉及继承的时

候。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: