java壓棧和彈棧

好好學習,天天向下

一、棧的存放

  • 局部變量
  • 堆中對象的引用(對象在堆內存中的 地址)
  • 全局變量存儲在堆中
  • 局部變量存儲在棧中
  • 棧的屬性:每條線程都有一個獨立的棧,在線程創建時創建

二、棧的操作

棧的存取順序是先進後出,後進先出,就像是桶裝羽毛球,先放進去的後拿出來

public class storage {
    //先規定棧的最大容量
    Object[] objs;
    //獲取當前棧容量
    int size;

    public void SQ(int MaxLen) {
        this.objs = new Object[MaxLen];
    }
    
    //進行壓棧操作(就是在棧中存入內容)
    public void push(Object x) {
     //先給當前指針位置賦值,然後指針變大
        System.out.println("壓棧操作,壓入內容爲" + (objs[size++] = x)); 
   }

    //彈棧操作
    public void popu() {
    //獲取棧頂數據,然後彈出棧中,棧容量減少
        System.out.println("彈出棧頂內容:" + objs[size - 1]);
        size--;
    }

    //獲取棧內所有數據
    public void getAllStack() {
        System.out.println("棧頂到棧底所有數據爲");
        for (int i = size - 1; i >= 0; i--) {
            System.out.println(objs[i] + " ");
        }
    }
}
public class run {
    public static void main(String[] args) {
        storage storage = new storage();
        storage.SQ(20);
        storage.push(1);
        storage.push(2);
        storage.push(3);
        storage.push(4);
        storage.getAllStack();
        storage.popu();
        storage.popu();
        storage.getAllStack();
    }
}

三、棧和棧幀

  • java棧以幀爲單位來保存線程的狀態
  • JVM對java棧只進行兩種操作——>一幀爲單位的壓棧和彈棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章