堆,栈,队列的一些浅薄的理解
2018-08-26 17:18:20来源:博客园 阅读 ()
一些自己理解的概念
(1)内存:内存是计算机重要的部件之一,任何程序都需要在内存中运行,是与cpu和外部存储设备数据沟通的桥梁。在计算机运行的过程中,cpu会把内存中的数据进行运算,当运行结束后,cpu会把迅速按结果暂时输出到内存。所以内存也决定着计算机的稳定运行。
(2)数据结构:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。(百度)
(3)常用的数据结构:数组、栈、队列、堆、链表、树、图、散列表等。
(4)堆:可以看作是一个完全二叉树(若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。)堆要在程序运行时动态分配内存,存取速度较慢。
String str1=
"abc"
;
String str2=
"abc"
;
下面用过数组来模拟下(完全二叉树)
(5)栈:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。(百度)
栈是后进先出
(6)队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列先进先出
(7)内存中的堆内存和占内存(切记不是数据结构中的堆和栈)
堆内存栈内存空间分配
堆内存栈内存缓存方式
堆内存栈内存申请效率的比较
栈:由系统自动分配,速度较快。但程序员是无法控制的。
堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
堆内存栈内存生成时间的比较
栈:在编译时确定的,不是在运行时.
堆:在运行时确定的,不是在编译时.
堆内存栈内存存储java数据类型的比较
栈:int, short, long, byte, float, double, boolean, char等基本类型 和对象的引用(比如 Car car =new Car()中Car car为对象的引用 ,而 new Car()是实际对象,存在于堆中)。
堆:包装类和真实的对象(String 类型也存在于堆内存)
以上是本人对堆,栈,队列的一些浅薄理解,如果有错误,欢迎大家在留言指正,相互学习,共同进步!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 一口气说出 6种 延时队列的实现方案,面试稳稳的 2020-06-08
- 总结一些 Java 相关笔试、面试题,万一用上了呢 (=_=) -- 基 2020-06-08
- Java - IO - 字符流 2020-05-31
- 数据结构之链式队列的代码实现及有趣应用 2020-05-29
- 针对kafka_2.13版本测试过程中的一些坑 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash