堆、栈、队列、及其区别

栈(stack):又名堆栈,存放的是:在函数中定义的一些基本数据类型的变量和对象的引用;当超过作用域后释放
栈(heap):存储对象,所有new出来的对象和数组

堆(二叉树):从根节点开始,每个节点都可以有左、右两个节点,元素优先将每一层按从左到右的方式填满,即父节点最多有2个子节点,有右子节点就一定有左子节点,同一层的某个节点左边一定是填满的。堆分为最大堆,最小堆,最小堆就是根节点元素值是所有元素中最小的,最大堆则相反,左右节点的大小则没有规定谁大谁小。

堆和栈的区别:
1、堆可以动态的分配内存大小(由程序员分配释放,如果程序员不释放,程序结束时可能有OS释放,分配方式类似于链表),生存周期不需要事先告诉编译器,程序运行时申请;栈通常比堆小,栈中存放的数据的大小和生存周期都必须是确定的(由编译器自动分配释放)
2、栈的存储速度比堆快,栈数据可共享
3、栈使用的是一级缓存,通常是被调用时处于存储空间中,调用完毕后立即释放;堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法决定
4、栈是运行时单位,堆是存储的单位,栈解决程序运行时的问题,即程序如何执行,或者说如何处理数据,堆解决的是数据的存储问题,即数据怎么放?放在那?

栈和队列的区别:
1、都只允许在端点处插入和删除元素
2、栈是先进后出,队列是先进先出
3、栈都是在一端进与出(仅允许在表的一端进行插入和删除操作,这一端被称为栈顶),队列则是在一端进,在另一端出(表的前端进行删除,表的后端进行插入)

java中main函数就是栈的起始点,也是程序的起始点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值