黑马程序员技术交流社区

标题: 关于堆和栈的问题 [打印本页]

作者: fiend    时间: 2012-7-28 10:13
标题: 关于堆和栈的问题
这个问题想得不是很明白,一般都说new一个对象,那这个这对象就放在堆中的,然后是局部变量都
放在栈里面的,可是如果局部变量的赋值也是new出来的,那它还是放在栈内存里吗?费解,求正解。。。。
作者: 乐峰    时间: 2012-7-28 10:19
栈内存的特点:存储都是局部变量 ( 函数参数,函数内定义的变量,语句中定义的变量)。变量一旦使用完(作用域结束),就会在栈内存中自动释放。堆:存储的是实体(数组和对象,只要是new的,都在堆中).
堆内存的特点:
1,堆内存中的实体都有首内存地址值.
2,堆内存中的变量都有默认初始化值.
3,对于没有任何引用变量指向的实体,会视为垃圾,会被垃圾回收机制所回收。


作者: 杜佳瑞    时间: 2012-7-28 10:28
局部变量如果赋值是new出来的话,这个值就是new的这个对象在堆内存中得地址值,这个变量只是对象的一个引用,所以它还是存放在栈内存中,毕老师前面课程讲了好多遍,仔细听一下就会明白的。
作者: 李菁    时间: 2012-7-28 10:31
对象存储在堆中,声明在存储在栈中。只要有new关键字的都存放在堆内存
堆的优势是可以动态地分配内存大小,栈的优势是存取速度比堆要快,栈可以实现数据共享




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