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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、因为new用到 person.class,所以类加载器会找到person.class文件并加载到内存。
2、执行类中的static代码块,如果有的话,会给person.class类进行初始化。
3、在栈内存中为p开辟一个空间,并存储 变量p
4、new Person()时,会在堆内存中开辟空间,分配内存地址。
5、成员变量进入开已经辟出的堆区并进行默认初始化,成员方法进入方法区。
6、String name="dajiahao";会对属性进行显示初始化。
7、然后构造代码块对对象进行初始化。
8、对应的构造函数对对象进行初始化。
9、将内存地址赋给栈内存中的p变量。

评分

参与人数 1黑马币 +10 收起 理由
唐僧 + 10 很给力!

查看全部评分

3 个回复

倒序浏览
好棒,总结的很不错哦!
回复 使用道具 举报
对了 第二步,静态代码块如果初始化了 类中的属性,那么 后面的每一步都无法再对该属性进行初始化,并且该属性的值会随着类的存在而存在,直到 垃圾处理器将其 从内存中回收,该属性才消失。
回复 使用道具 举报
路过,附上一张初始化示意图

对象的初始化过程图解 (2).jpg (99.64 KB, 下载次数: 18)

始化图

始化图
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马