要想理解方法执行过程中内存的分配,我们需要先学习一下栈数据结构,那么什么是数据结构呢?其实数据结构是一门独立的学科,不仅是在java编程中需要使用,在其它编程语言中也会使用,在大学的计算机课程当中,数据结构和算法通常作为必修课出现,而且是在学习任何一门编程语言之前先进行数据结构和算法的学习。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
常见的数据结构有哪些呢?例如:栈、队列、链表、数组、树、图、堆、散列表等。目前我们先来学习一下栈(stack)数据结构,这是一种非常简单的数据结构。如下图所示:
图7-7:栈数据结构
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是:仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈、退栈或弹栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。如下图所示:
图7-8:栈数据结构
通过以上的学习,我们可以得知栈数据结构存储数据有这样的特点:先进后出,或者后进先出原则。也就是说最先进去的元素一定是最后出去,最后进去的元素一定是最先出去,因为一端是开口的,另一端是封闭的。
对于栈数据结构,目前我们了解这么多就可以了,等学完“方法执行的时候内存是如何变化的”,到那个时候大家再思考一个问题,为什么方法执行过程的内存要采用栈这种数据结构呢,为什么不选择其它数据结构呢?