好好學習,天天向下
一、棧的存放
- 局部變量
- 堆中對象的引用(對象在堆內存中的 地址)
- 全局變量存儲在堆中
- 局部變量存儲在棧中
- 棧的屬性:每條線程都有一個獨立的棧,在線程創建時創建
二、棧的操作
棧的存取順序是先進後出,後進先出,就像是桶裝羽毛球,先放進去的後拿出來
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棧只進行兩種操作——>一幀爲單位的壓棧和彈棧