Java 數據結構 棧和隊列的區別;棧和堆的區別 解析教程;

一、棧Stack 和 隊列Queue 的區別

1.棧Stack 就像一個框,單出口, 先進後出

2.隊Queue 列就像排隊,雙出口,先進先出

在這裏插入圖片描述
在這裏插入圖片描述

3. 實例代碼參考

二、Java 堆Heap 和 棧 Stack的區別(Java的內存只有2種堆和棧,注意區分和數據結構和內存的區別)

1. 基本數據類型和引用變量的變量名都在棧中。

1.有哪些基本數據類型?
八大數據類型:int, short, long, byte, float, double, boolean, char
注意:String 不是基本數據類型。
2.引用變量的變量名指的什麼?
在函數中定義的一些基本類型的變量,和對象的引用變量
比如:下面代碼中的 student

Student student = new Student();

2.Java棧的內存回收處理?

Java 就在棧中爲這個變量分配內存空間,當超過變量的作用域後,Java 會自動釋放掉爲該變量分配的內存空間

2. 堆用來存放 對象和數組

1. 存放對象

比如下面的 new Student(“張三”,18);

Student  student = new Student("張三",18);

2.存放數組:

比如下面 的數組 。棧Stack種儲存: arraystring 的值,爲 數組的首地址
堆儲存數組 : {“張三”,“李四”,“王五”}

String[] arrayString = {"張三","李四","王五"};

3.類的初始化,Static final都在堆中。

4.堆中的內存回收處理?

數組和對象本身在堆中分配,即使程序運行到使用 new 產生數組或者對象的語句所在的代碼塊之外,數組和對象本身佔據的內存不會被釋放,數組和對象在沒有引用變量指向它的時候,才變爲垃圾,不能在被使用,但仍然佔據內存空間不放,在隨後的一個不確定的時間被垃圾回收器收走(釋放掉)。
這也是 Java 比較佔內存的原因,實際上,棧中的變量指向堆內存中的變量,這就是 Java 中的指針!

問題:有沒有實現先進後出的實例???

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章