为了总结对象的创建过程,考虑一下名为Dog的类:
1、即使Dog类没有明确使用static关键字,constructor实际上就一个static方法。 所以Dog类型的对象第一次被创建的时候,或者Dog类的static成员第一次被访问的时候,Java解释器必须通过查找类路径来得到Dog.class文件。
2、当Dog.class文件被加载之后,(你将在后面学习创建类对象的知识),它的所有statics被初始化。 因此,当Class对象第一次被加载的时候,static初始化只发生一次。
3、当你使用new Dog()创建了一个对象时,Dog对象首先在堆里分配到足够的存贮空间。
4、这块空间自动为Dog里的所有primitives设置默认值(numbers类型为零,还有boolean和char的相应默认值),为对象引用赋予值null。
5、执行field定义时的初始化。
6、Constructor执行。 正如你将在Reusing Classes一章里看到的,constructor执行可能涉及到相当多的动作,尤其是当继承卷入其中的时候。
- [游客] 好东西,收藏之 05/26 23:40
- [游客] 有机会也搞搞 07/23 11:06
- [游客] 看不懂咧。 12/10 20:33
- [游客] 范式?好像是数据库原理吧。 12/10 20:30
- [游客] 顶! 12/07 15:14
- [游客] 分析的很正确啊。 12/07 15:11
- [gyk1983] 加油 12/06 16:37
- [wdm] 是这么回事。以前我也遇见过,不过,重新启动就没事了。 应该是再重启后这个键值就应高over了吧。 03/22 14:15
- [wdm] 蛤蟆跳井--扑通(不懂) 03/21 14:31
- [xiaofkg] 通用的 03/21 08:41
- [huibian] 建议增加些注释 ;-) 01/04 10:38
- [xiaofkg] 继续,成功就在脚下。 01/03 19:14
- [xiaofkg] 坚持做好所能做好的一切,加油,加油.... 10/19 16:56