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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高美云 黑马帝   /  2011-11-2 19:38  /  1928 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                Person  p=new Person("张三",20);
       
        1,new用到了Person.class,所以会用到Person.class文件并加载到内存中。
        2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
        3,在堆内存中开辟空间,并分配内存地址。
        4,在堆内存中建立对象的特有属性。并进行默认初始化。
        5,对属性进行显示初始化。
        6,对对象进行构造代码块初始化。
        7,对对象进行对应的构造函数初始化。
        8,将内存地址赋给栈内存中的p变量。

评分

参与人数 3技术分 +2 黑马币 +5 收起 理由
admin + 5 不错!
杨玉揆 + 1 赞一个!
李印东老师 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
就这一句代码,电脑就执行了这么多步骤?堆内存主要存什么?变量吗?那栈内存呢?
回复 使用道具 举报
有点意思,研究中……
回复 使用道具 举报
看是简单的东西 其实一点也不简单 这个必须的记住 总结的非常好
回复 使用道具 举报
顶一个,new其实是在创建对象,而创建对象又是在运行时进行的,所以包括内存的分配,初始化等等都相应的进行,但是有个先后之分:static是最先执行的,而且只执行一次,属于对象的共享资源,然后创建对象就必须调用构造函数等等
回复 使用道具 举报
赞{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马