黑马程序员技术交流社区

标题: 求助!!! [打印本页]

作者: 陈泰延    时间: 2013-1-21 11:22
标题: 求助!!!

        person p =new person("zhangsan",20);
        该句话都做了什么事情?
       
        1,因为new用到了person,class所以会先找到person。class文件并加载到内存中。
        2,执行该类中的static代码块,如果有的话,给person。class类进行初始化。
        3,在堆内存中开辟空间,分配内存地址。
        4,在堆内存中建立对象的特有属性,并进行默认初始化。
        5,对属性进行显示初始化。
                                             //第4和第5不怎么明白,求黑马们指教!
        6,对对象进行构造代码块初始化。
        7,对对象进行对应的构造函数初始化。
        8,将内存地址给栈内存中的P的变量
作者: 张洪慊    时间: 2013-1-21 11:31
4.在堆内存中建立对象的特有属性,并进行默认初始化。
   这个特有属性可以理解为 对象的 非静态属性
   默认初始化: 例如: 在类中有int number;//默认初始化为0
                                        String str;//默认初始化为null
5.显式初始化
    在类中:int number=3;//显式初始化
作者: 刘郑瑞    时间: 2013-1-21 11:38
第3步,开辟内存空间后,分配内存后。第4步,会对对象的姓名和年龄内存空间进行系统默认的初始化。第5步,对姓名和年龄进行赋值“zhangsan”,20,初始化。  个人观点。
作者: 黄锦成    时间: 2013-1-21 11:40
楼上正解
作者: 打工人    时间: 2013-1-21 12:10
黄锦成 发表于 2013-1-21 11:40
楼上正解

面试多少分额
作者: 杨浩    时间: 2013-1-21 13:22
冯海霞 发表于 2013-1-21 12:10
面试多少分额

如果是
Person p;
p = new Person();
那么第一句,会加载Person.class到虚拟机么?
栈内存需要创建一个Person类型的变量p的。




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