好好学习,天天向下
一、栈的存放
- 局部变量
- 堆中对象的引用(对象在堆内存中的 地址)
- 全局变量存储在堆中
- 局部变量存储在栈中
- 栈的属性:每条线程都有一个独立的栈,在线程创建时创建
二、栈的操作
栈的存取顺序是先进后出,后进先出,就像是桶装羽毛球,先放进去的后拿出来
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栈只进行两种操作——>一帧为单位的压栈和弹栈