堆跟栈的概念:
堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值。
栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。(跟盖房子一样,后来者居上)
堆跟栈的对比:
1,申请方式
heap:程序员自己申请,并指明大小。
stack:由系统分配。
2、申请效率
stack:效率较高,速度较快,但程序员无法对其进行控制。
heap:由new分配的内存,相对效率和速度都较低,且容易产生碎片,但由于是程序员自己申请操作,灵活性强,使用方便。
3、储存类型
stack:存储值类型,即存储固定长度的数据。比如:整数、字符、结构、布尔、枚举等。每个程序在执行时都有自己的堆栈,其他程序不能访问该堆栈。
heap:存储引用类型。比如:类、接口、数组等。
三、相关名词
1,压栈(进栈、入栈):用push表示,就是把数据放入栈中,从栈顶放入,有先进后出的特点!
2,清栈:清空栈中所有的数据。
3,出栈:用POP表示,它是和压栈相反的概念,即把数据从栈中取出来。出栈时从栈顶取出。
4,堆栈溢出:就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了旧的堆栈数据。
随着工作的深入,自己也会更新对这个堆跟栈的理解