黑马程序员技术交流社区

标题: 总结一下对象的创建过程 [打印本页]

作者: zjy519893509    时间: 2014-10-24 21:40
标题: 总结一下对象的创建过程
假设我们将创建一个名为Dog的类:
1.在首次创建类为Dog的对象时,或者Dog类的静态方法\静态域首次被访问时,java的解析器会查找该类的路径,以定位Dog.class文件。
2.然后载入Dog.class,并创建一个Class对象,有关静态初始化的所有的动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。
3.当用New Dog()创建对象的时候,首先将在堆上的Dog对象分配足够的内存空间。
4.这块存储空间会被清零,这就自动的将Dog对象的所有基本类型数据都设置为了默认值,而引用则被设置为null。
5.执行所有出现于字段定义处的初始化动作。
6.执行构造器。
作者: date1130    时间: 2014-10-24 21:43
加油!努力!坚持。。。。
作者: zjy519893509    时间: 2014-10-26 01:28
date1130 发表于 2014-10-24 21:43
加油!努力!坚持。。。。

好心疼!为什么不奖励我技术分!
作者: Eagle    时间: 2014-10-26 07:34
zjy519893509 发表于 2014-10-26 01:28
好心疼!为什么不奖励我技术分!

哥们。。不怕。这个自然会有的。
作者: Paul_Chang    时间: 2014-10-26 08:51
写挺好的
作者: hanxing    时间: 2014-10-26 09:34
总结的到位,终于知道细节了

作者: zhangyangLengen    时间: 2014-10-26 09:48
··子类的实例化过程:(很重要)[子类的实例化过程]
                     Person p=new Person()
     ···jvm会进行读取到指定路径下的Person.class文件,并加载到内                         存,并会加载Person的父类(如果有直接父类的情况)
     ···在堆内存中的开辟空间,分配地址
     ···并在对象空间中,对对象的属性进行默认初始化
     ···调用对应的构造函数
     ···在构造函数中,第一行会调用父类的构造函数进行初始化
     ···父类的构造调用顺序,但是先进行父类的构造代码块初始化
     ···继而进行父类的成员变量的显示初始化
     ···然后对父类的成员进行特定初始化
     ···在父类初始化完毕后,进行调用父类的构造代码块
     ···对子类的属性进行显示初始化
     ···再进行对子类构造函数的属性进行特定的初始化
     ···初始化化完毕之后,将地址赋给引用变量。
作者: zhangyangLengen    时间: 2014-10-26 09:49
··子类的实例化过程:(很重要)[子类的实例化过程]
                     Person p=new Person()
     ···jvm会进行读取到指定路径下的Person.class文件,并加载到内                         存,并会加载Person的父类(如果有直接父类的情况)
     ···在堆内存中的开辟空间,分配地址
     ···并在对象空间中,对对象的属性进行默认初始化
     ···调用对应的构造函数
     ···在构造函数中,第一行会调用父类的构造函数进行初始化
     ···父类的构造调用顺序,但是先进行父类的构造代码块初始化
     ···继而进行父类的成员变量的显示初始化
     ···然后对父类的成员进行特定初始化
     ···在父类初始化完毕后,进行调用子类的构造代码块
     ···对子类的属性进行显示初始化
     ···再进行对子类构造函数的属性进行特定的初始化
     ···初始化化完毕之后,将地址赋给引用变量。
作者: 苑桥别馆    时间: 2014-10-26 17:17
感觉写的不错,支持一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2