黑马程序员技术交流社区

标题: 栈空间,与堆空间存储数据的不同 [打印本页]

作者: Buer    时间: 2016-7-18 15:17
标题: 栈空间,与堆空间存储数据的不同
栈空间存储的都是变量,堆空间存储常量。这样说对吧
作者: cat73    时间: 2016-7-18 15:39
并不对哟。。。
作者: cat73    时间: 2016-7-18 15:47
栈里存储的有:
基础数据类型
对象引用
返回地址

各项解释:
基础数据类型 int long double 等等
对象引用 直接或间接的指向了一个堆中的对象
返回地址 当前的方法执行完毕后,应该 return 到哪里继续执行
作者: Buer    时间: 2016-7-18 23:04
cat73 发表于 2016-7-18 15:47
栈里存储的有:
基础数据类型
对象引用

赞----------
作者: zhangjiesss    时间: 2016-7-19 09:15
栈内存里存放的是局部变量,堆内存存的是数组和对象,每个实体都有地址值。
作者: Buer    时间: 2016-7-21 01:04
cat73 发表于 2016-7-18 15:47
栈里存储的有:
基础数据类型
对象引用

比如 int a =1,符号a,与数值 1 ,都是存放在栈空间的内存上吗,将1赋值给a的时候,是将 1的地址值,存放在a 所在的内存空间里了吗
作者: cat73    时间: 2016-7-21 08:21
Buer 发表于 2016-7-21 01:04
比如 int a =1,符号a,与数值 1 ,都是存放在栈空间的内存上吗,将1赋值给a的时候,是将 1的地址值,存 ...

你是说方法里的局部变量?
实际上编译后根本没有变量名这个东西。
只有第几个变量。
也就是说这个 a 是不存储的。
只有 1 这个数字会被存储到它对应的局部变量的位置。
作者: Buer    时间: 2016-7-21 13:21
cat73 发表于 2016-7-21 08:21
你是说方法里的局部变量?
实际上编译后根本没有变量名这个东西。
只有第几个变量。

如果再次赋值a=2,数字2怎么找到之前1所在的内存地址呢,a去哪里了
作者: 柒月份的尾巴丶    时间: 2016-7-21 19:38
栈 堆 和常量池 是三块不同的区域    new出来的对象都在堆中有地址值




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