关于大家经常在java中提到的 堆和 栈, 我的理解如下:
堆, 就象我们自己在家里做饭吃一样!~ 想放进去什么对象炒就放进去炒,至于能不能吃, 那就看自己的造化了~~
栈, 就是我们去java小菜馆里吃!~ 它那就4类8道菜, 什么红烧int啦, 清炒double啦!~ 就这8道菜!~ 爱吃不吃!~ 不吃到别地吃去!~(好象也没其他菜馆去了! 自己开吧!~呵呵)至于跟数据结构中的堆 和栈 是不是一样的解释 或存储方式了!~~ 我就不太懂了!烦请大家讨论, 并给予清晰的答案!~ 谢谢!~
堆, 就象我们自己在家里做饭吃一样!~ 想放进去什么对象炒就放进去炒,至于能不能吃, 那就看自己的造化了~~
栈, 就是我们去java小菜馆里吃!~ 它那就4类8道菜, 什么红烧int啦, 清炒double啦!~ 就这8道菜!~ 爱吃不吃!~ 不吃到别地吃去!~(好象也没其他菜馆去了! 自己开吧!~呵呵)至于跟数据结构中的堆 和栈 是不是一样的解释 或存储方式了!~~ 我就不太懂了!烦请大家讨论, 并给予清晰的答案!~ 谢谢!~
楼主【bxdg42578670】截止到2008-06-30 16:50:28的历史汇总数据(不包括此帖):
发帖数:23 发帖分:540
结贴数:17 结贴分:460
未结数:6 未结分:80
结贴率:73.91 % 结分率:85.19 %
楼主加油
先是在栈中给变量p分配空间
new Person()在堆中分配空间,
而p就是这个对象的引用
参考: 对于一个进程的内存空间而言,可以在逻辑上分成3个部份:代码区,静态数据区和动态数据区。动态数据区一般就是“堆栈”。“栈(stack)”和“堆(heap)”是两种不同的动态数据区,栈是一种线性结构,堆是一种链式结构。进程的每个线程都有私有的“栈”,栈是系统数据结构,对于进程/线程是唯一的; 堆是函数库内部数据结构,不一定唯一 是动态的, 是存放实际对象的 用完后会释放掉
对于这样解释我都理解了! 我想问清楚的是: 基础数据类型是在栈中一直分配好的, 就相当于菜馆里的菜铺~ 还有变量名 也是吗?
栈不止8道菜哦
String a = "aaa";
aaa就是存在栈中