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栈只进行两种操作——>一帧为单位的压栈和弹栈
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值