黑马程序员技术交流社区
标题:
java面向对象 Person p=new Person();
[打印本页]
作者:
飘过的云
时间:
2015-5-18 22:06
标题:
java面向对象 Person p=new Person();
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变量。
作者:
黑马生涯
时间:
2015-5-18 23:58
好棒,总结的很不错哦!
作者:
飘过的云
时间:
2015-5-19 00:16
对了 第二步,静态代码块如果初始化了 类中的属性,那么 后面的每一步都无法再对该属性进行初始化,并且该属性的值会随着类的存在而存在,直到 垃圾处理器将其 从内存中回收,该属性才消失。
作者:
唐僧
时间:
2015-5-19 00:54
路过,附上一张初始化示意图
对象的初始化过程图解 (2).jpg
(99.64 KB, 下载次数: 18)
下载附件
2015-5-19 00:53 上传
始化图
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2