要想理解方法執行過程中內存的分配,我們需要先學習一下棧數據結構,那么什么是數據結構呢?其實數據結構是一門獨立的學科,不僅是在java編程中需要使用,在其它編程語言中也會使用,在大學的計算機課程當中,數據結構和算法通常作為必修課出現,而且是在學習任何一門編程語言之前先進行數據結構和算法的學習。數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。
常見的數據結構有哪些呢?例如:棧、隊列、鏈表、數組、樹、圖、堆、散列表等。目前我們先來學習一下棧(stack)數據結構,這是一種非常簡單的數據結構。如下圖所示:
圖7-7:棧數據結構
棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是:僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入?;驂簵#╬ush),它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧、退?;驈棗#╬op),它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。如下圖所示:
圖7-8:棧數據結構
通過以上的學習,我們可以得知棧數據結構存儲數據有這樣的特點:先進后出,或者后進先出原則。也就是說最先進去的元素一定是最后出去,最后進去的元素一定是最先出去,因為一端是開口的,另一端是封閉的。
對于棧數據結構,目前我們了解這么多就可以了,等學完“方法執行的時候內存是如何變化的”,到那個時候大家再思考一個問題,為什么方法執行過程的內存要采用棧這種數據結構呢,為什么不選擇其它數據結構呢?