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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈泰延 中级黑马   /  2013-1-21 11:22  /  1707 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


        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的变量

5 个回复

倒序浏览
4.在堆内存中建立对象的特有属性,并进行默认初始化。
   这个特有属性可以理解为 对象的 非静态属性
   默认初始化: 例如: 在类中有int number;//默认初始化为0
                                        String str;//默认初始化为null
5.显式初始化
    在类中:int number=3;//显式初始化

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
第3步,开辟内存空间后,分配内存后。第4步,会对对象的姓名和年龄内存空间进行系统默认的初始化。第5步,对姓名和年龄进行赋值“zhangsan”,20,初始化。  个人观点。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
黄锦成 发表于 2013-1-21 11:40
楼上正解

面试多少分额
回复 使用道具 举报
冯海霞 发表于 2013-1-21 12:10
面试多少分额

如果是
Person p;
p = new Person();
那么第一句,会加载Person.class到虚拟机么?
栈内存需要创建一个Person类型的变量p的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马