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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张校云 黑马帝   /  2011-10-7 00:22  /  2285 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

应该怎样从使用层面理解堆和栈?求详解

2 个回复

倒序浏览
本帖最后由 宁超 于 2011-10-7 00:39 编辑

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

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马