黑马程序员技术交流社区

标题: 应该怎样从使用层面理解堆和栈? [打印本页]

作者: 张校云    时间: 2011-10-7 00:22
标题: 应该怎样从使用层面理解堆和栈?
应该怎样从使用层面理解堆和栈?求详解
作者: 宁超    时间: 2011-10-7 00:38
本帖最后由 宁超 于 2011-10-7 00:39 编辑

堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由
度大。
建议你看下http://www.blogjava.net/ITdavid/archive/2008/01/16/175679.html
作者: 林国锋    时间: 2011-10-7 00:41
最简单的理解
堆:顺序随意
栈:先进后出
堆和栈都是JAVA在内存存放数据的地方
堆的存取速度就慢些
栈的存取速度就快些
通过new()来建立的对象就会存放在堆中
String str = "abc";这种方法会先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。




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