日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaSE(二十一)——栈和队列、栈和堆

發布時間:2025/3/13 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaSE(二十一)——栈和队列、栈和堆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 棧和隊列
    • 1.1 定義
    • 1.2 區別
    • 1.3 常見筆試題
  • 2. 棧和堆
    • 2.1 棧內存
    • 2.2 堆內存
    • 2.3 區別

1. 棧和隊列

1.1 定義

棧(Stack):是限定能在表的一端進行插入和刪除操作的線性表
隊列(Queue):是限定只能在表的一端進行插入和另一端刪除操作的線性表

1.2 區別

棧和隊列的區別:
(1)棧的插入和刪除操作都是在一端進行的,而隊列的操作卻是在兩端進行的;
(2)棧是先進后出,隊列是先進先出;
(3)棧只允許在表尾一端進行插入和刪除,隊列只允許在表尾一端進行插入,在表頭一端進行刪除。

1.3 常見筆試題

一個棧的入棧序列是abcde,則棧的不可能的輸出序列是( C )
A.edcba
B.decba
C.dceab
D.abcde
解析:堆棧講究先進后出,后進先出。
選項A:abcde先入棧,然后依次出棧,正好是edcba;
選項B:abcd先依次入棧,然后d出棧,e再入棧,e出棧,最后cba依次出棧;
選項C:錯誤;
選項D:a入棧,然后a出棧;b再入棧,b出棧……依此類推。

2. 棧和堆

2.1 棧內存

  • 棧內存首先是一片內存區域,存儲的都是局部變量;
  • 凡是定義在方法中的都是局部變量(方法外的是全局變量),for循環內部定義的也是局部變量,是先加載函數才能進行局部變量的定義,所以方法先進棧,然后再定義變量;
  • 變量有自己的作用域,一旦離開作用域,變量就會被釋放;
  • 棧內存的更新速度很快,因為局部變量的生命周期都很短。

2.2 堆內存

  • 存儲的是數組和對象(其實數組就是對象),凡是new建立的都是在堆中;
  • 堆中存放的都是實體(對象),實體用于封裝數據,而且是封裝多個(實體的多個屬性),如果一個數據消失,這個實體也沒有消失,還可以用,所以堆是不會隨時釋放的;
  • 但是棧不一樣,棧里存放的都是單個變量,變量被釋放了,那就沒有了。堆里的實體雖然不會被釋放,但是會被當成垃圾,Java有垃圾回收機制不定時的收取。

2.3 區別

棧和堆的區別:
(1)棧內存存儲的是局部變量而堆內存存儲的是實體;
(2)棧內存的更新速度要快于堆內存,因為局部變量的生命周期很短;
(3)棧內存存放的變量生命周期一旦結束就會被釋放,而堆內存存放的實體會被垃圾回收機制不定時的回收。

總結

以上是生活随笔為你收集整理的JavaSE(二十一)——栈和队列、栈和堆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。