一.栈的作用

1. 栈的存放

  • 局部变量
  • 堆中对象的引用(对象在堆内存中的地址)
  一个对象的大小无法估计,但是一个对象的引用只占4byte
  基本数据类型的变量没有什么存储区域的说法,内存中分为两类进行存储    
    • 全局变量存储在堆中
    • 局部变量存储在栈中
 
 
2. 栈的属性
  • 栈的创建方式
    • 每条线程都有一个独立的栈,在线程创建时创建

二.栈的操作

 1. 栈的存取顺序是先进后出,后进先出,就像是手枪弹夹,后进去的先打出来;
 
 2. 代码模拟
public class SQ {
//先规定栈的最大容量
Object[] objs ;
//获取当前栈容量
int size; public 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 static void main(String[] args) {
SQ s = new SQ(20);
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.getAllStack();
s.popu();
s.popu();
s.getAllStack();
}
}
output:
压栈操作,压入内容为1
压栈操作,压入内容为2
压栈操作,压入内容为3
压栈操作,压入内容为4
栈顶到栈底所有数据为
4
3
2
1
弹出栈顶内容:4
弹出栈顶内容:3
栈顶到栈底所有数据为
2
1
 
 
 

三.栈和栈帧

1.栈帧的作用和定位
  • java栈以帧为单位来保存线程的状态
  • jvm对java栈只进行两种操作
    • ----以为单位的压栈和弹栈
 
2.局部变量表
  局部变量,他是class文件里面的内容,加载后被传递到方法区,参见Class类详解
    

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

请写出JAVA弹栈压栈的步骤, 栈的存储方式的更多相关文章

  1. 【Java面试题】30 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

    题目如下: 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次 思路如下: 子线程语主线程为互斥,可用SYNCHRONIZED.很容易想 ...

  2. 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用

    请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...

  3. 请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 (黄色部分即02-236-9655/9659 ) ( 测试面试题)

    请写出正则表达式(regex),取得下列黄色部分的字符串 TEL: 02-236-9655/9659 FAX:02-236-9654 答: package test1; import java.uti ...

  4. 如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true

    下面这篇文章是从StackOverflow来的.LZ面试的时候遇到了一道面试题:“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面的这样的程序: bool ...

  5. 请写出5种常见到的runtime exception。

    请写出5种常见到的runtime exception. 解答: NullPointerException:当操作一个空引用时会出现此错误. NumberFormatException:数据格式转换出现 ...

  6. 请写出JavaScript中常用的三种事件。

    请写出JavaScript中常用的三种事件. 解答: onclick,onblur,onChange

  7. 请写出一个超链接,点击链接后可以向zhangsan@d-heaven.com发送电子邮件。

    请写出一个超链接,点击链接后可以向zhangsan@d-heaven.com发送电子邮件. <a href=”mailto: zhangsan@d-heaven.com”>发邮件</ ...

  8. 请写出一段表单提交的HTML代码,表单名称为form1,提交方式为post,提交地址为submit.asp

    请写出一段表单提交的HTML代码,表单名称为form1,提交方式为post,提交地址为submit.asp 解答: <form name=”form1” method=”post” action ...

  9. 假设高度已知,请写出三栏布局,其中左栏、右栏各为300px,中间自适应的五种方法

    假设高度已知,请写出三栏布局,其中左栏.右栏各为300px,中间自适应的五种方法 HTML CSS 页面布局 题目:假设高度已知,请写出三栏布局,其中左栏.右栏各为300px,中间自适应 <!D ...

随机推荐

  1. 从TFS中的现有项目复制一份作为新项目,导致提交的服务器无法加载

    解决方案: 1.编辑 .csproj文件,改为自己的名字 2.取消解绑

  2. @P0或@P1附近有语法错误

    分析:@P0指的是第一个参数附近有错误;为'@P1'指的是第二个参数附近错误语法有错误.

  3. window.onerror 错误监听,发到后台

    var doc = document.body || document.documentElement; var _onerror = Onerror(''); var Onerror = funct ...

  4. llmp_install.zip

    https://pan.baidu.com/s/14tQdE9CPe55P5m9rGm5ekw

  5. CoreGraphics(转)

    2.CoreGraphics 上面我们讲过,UIBezierPath是CoreGraphics的封装,使用它可以完成大部分的绘图操作,不过更底层的CoreGraphics更加强大. CoreGraph ...

  6. indexDB操作(部分方法不太会使用)

    <script type="text/javascript"> //打开数据库 function openDB(name,version){ var version = ...

  7. 渗透模型 Percolation Models(一个物理模型的广泛应用)

    转自:http://mooc.guokr.com/note/15357/ http://mooc.guokr.com/user/0298406005/note/ 模型思想: 有水流下来,是否会渗入地面 ...

  8. ES6 对Number的扩展

    Number.isFinite(), Number.isNaN() ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法. Number.is ...

  9. hdu 1361.Parencodings 解题报告

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1361 题目意思: 根据输入的P-sequence , 输出对应的W-sequence.   P-se ...

  10. html5--5-14 阶段小练习:绘制太极图案

    html5--5-14 阶段小练习:绘制太极图案 学习要点 运用前几节课的知识完成一个小练习 这个图案有多种不同的绘制方法,这里只做一个简单的演示,练习的时候可以自己思考一下,尝试其他的方法,或者对这 ...