A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zjy519893509 中级黑马   /  2014-10-24 21:40  /  1176 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
加油!努力!坚持。。。。
回复 使用道具 举报 1 0
date1130 发表于 2014-10-24 21:43
加油!努力!坚持。。。。

好心疼!为什么不奖励我技术分!

评分

参与人数 1黑马币 +6 收起 理由
Eagle + 6 淡定,6分可换1技术分。哥们,一起努力.

查看全部评分

回复 使用道具 举报
zjy519893509 发表于 2014-10-26 01:28
好心疼!为什么不奖励我技术分!

哥们。。不怕。这个自然会有的。
回复 使用道具 举报
写挺好的
回复 使用道具 举报
总结的到位,终于知道细节了
回复 使用道具 举报
··子类的实例化过程:(很重要)[子类的实例化过程]
                     Person p=new Person()
     ···jvm会进行读取到指定路径下的Person.class文件,并加载到内                         存,并会加载Person的父类(如果有直接父类的情况)
     ···在堆内存中的开辟空间,分配地址
     ···并在对象空间中,对对象的属性进行默认初始化
     ···调用对应的构造函数
     ···在构造函数中,第一行会调用父类的构造函数进行初始化
     ···父类的构造调用顺序,但是先进行父类的构造代码块初始化
     ···继而进行父类的成员变量的显示初始化
     ···然后对父类的成员进行特定初始化
     ···在父类初始化完毕后,进行调用父类的构造代码块
     ···对子类的属性进行显示初始化
     ···再进行对子类构造函数的属性进行特定的初始化
     ···初始化化完毕之后,将地址赋给引用变量。
回复 使用道具 举报
··子类的实例化过程:(很重要)[子类的实例化过程]
                     Person p=new Person()
     ···jvm会进行读取到指定路径下的Person.class文件,并加载到内                         存,并会加载Person的父类(如果有直接父类的情况)
     ···在堆内存中的开辟空间,分配地址
     ···并在对象空间中,对对象的属性进行默认初始化
     ···调用对应的构造函数
     ···在构造函数中,第一行会调用父类的构造函数进行初始化
     ···父类的构造调用顺序,但是先进行父类的构造代码块初始化
     ···继而进行父类的成员变量的显示初始化
     ···然后对父类的成员进行特定初始化
     ···在父类初始化完毕后,进行调用子类的构造代码块
     ···对子类的属性进行显示初始化
     ···再进行对子类构造函数的属性进行特定的初始化
     ···初始化化完毕之后,将地址赋给引用变量。
回复 使用道具 举报
感觉写的不错,支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马