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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© preludeOo_L 中级黑马   /  2017-2-26 12:49  /  774 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

空参构造在new的时候是不是要进方法栈,那他什么时候弹栈呢?弹栈后new出来的对象是不是就消失了?
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端

3 个回复

倒序浏览
new对象的时候,构造方法进栈,初始化成员变量,初始化成员变量之后就会弹栈

没有引用指向对象的时候,对象就成了垃圾,垃圾回收器会不定时清理
回复 使用道具 举报
如果说你写的代码是:Demo d=new Demo(); 实例初始化的时候刚开始类加载进内存,然后main方法压栈,然后开始执行刚才我写的那句代码,现在栈内创建一个变量d,然后在队内存中创建一个对象,然后Demo(){};默认构造方法压栈,他有个this引用,持有这个对象的地址(也就是不会给其他对象初始化),会执行初始化动作(中间省略继承调用父类构造函数及自身构造代码块初始化),初始化结束后,构造函数弹栈,然后把对象的内存地址赋值给引用d,完成对象的创建。
回复 使用道具 举报
如果说仅仅是new Demo();同样构造函数压栈,初始化结束后弹栈,然后对象存在在堆内存中,没有引用指向他,java垃圾回收机制不定期回清理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马