一个java对象创建的过程

来源:互联网 发布:黑客网络hacknet攻略 编辑:程序博客网 时间:2024/06/01 19:26

初始化的顺序是先静态对象(假设它们尚未因前面的对象创建过程而被初始化过),而后是“非静态”对象。

要执行main()(静态方法),必须加载main所在的当前类,然后其静态域会被初始化(构造函数可以看成静态方法),这将导致它们对应的类也被加载,并且由于它们也都包含静态的对象,因此这些静态对象l随后也被加载。这样,在这个特殊的程序中的所有类在main()开始之前就都被加载了。但是实际情况通常并非将所有的事物都通过static联系起来。


总结一下对象的创建过程,假设有个名为Dog的类:

1、即使没有显示的使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为Dog的对象时(构造器可以看成是静态方法),或者Dog类的静态方法/静态域首次被访问时,java解释器必须查找类路径,以定位Dog.class文件。

2、然后载入Dog.class(这将创建一个Class对象),有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。

3、当用new Dog()创建对象的时候,首先将在堆上为Dog对象分配足够的存储空间。

4、这块存储空间会被清零,这就自动地将Dog对象中的所有基本类型数据都设置成了默认值(对数字来说就是0,对布尔型和字符型也相同),而引用则被设置成了null.

5、执行所有出现于字段定义处的初始化动作。

6、执行构造器。

原创粉丝点击