
正文
java入栈出栈的代码 java入栈出栈的代码是什么
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java如何实现出栈入栈并获取栈中最小值的程序
你得明白栈的定义。代码执行的时候是执行一个方法,执行完,返回方法的上一个代码块继续往下执行后面的内容。这样的话是不是就是一个栈结构了?先进后出。方法一边执行,一边往栈里面存数据,等执行完了就取出数据(取出的是返回值,是最后一个存进去的 栈结构是后进先出),然后执行外面的代码。这么说你可能不明白,我给你举个例子。
int sub(int a,int b){
return a+b;
}
int c = sub(2,3);//注意执行这条语句的时候是不是执行了一个方法?
//那么语句执行的时候是要从左往右执行的对吧,但是事实的逻辑却是先算出来sub(2,3)这个方
//法的返回值,然后再把返回值(5)赋值给 c ,那么这个怎么实现,肯定是一个栈的数据结构,编译的时候先把”int c = “入栈,然后再把 sub(2,3),入栈,执行的时候,从栈里面取,取的第一个肯定是sub(2,3)吧?于是就计算出等于5,继续取,取出了int c =,然后就和5对接上了,就把值赋给c了。这只是一个小例子。
道理是这样,但是具体的存取可不是这样的哦。具体的存取应该分的非常细腻,应该是按照java语法的最小单位来往栈里存取的。说白了一句话,程序运行的时候的先后顺序是跟人大脑想问题的顺序一样的,但是代码不是按照这样的顺序写的(从左到右),于是就用栈结构来达到这样的效果。
这么说,明白了吗?
相关问答
Q1: Java运算问题
我的建议是不要研究也不要写出这样的代码。这种代码在C/C++中是未定义行为。虽然我没有查到Java文档对此的定义,但鉴于大多数开发机器安装的都是Oracle的jdk,结果还是有参考性的。查看一下这段代码的bytecode:
解释一下每一行:
0: iconst_1 常数1入栈
1: istore_1 栈顶元素出栈并赋值给位置1的int型变量 (0~1对应Java代码:i=1)
2: iload_1 从位置1的int型变量中读出值并入栈
3: iinc 1,1 将位置1的int型变量自增1 (对应Java代码:++i)
4: iload_1 从位置1的int型变量中读出值并入栈
5: iadd 弹出栈顶两个int型变量并做加法,结果入栈 (对应Java代码:i+=i,结果为1+2=3)
6: istore_1 将第5步的结果写回变量i,此时i就变为3。
Q2: Java中栈的使用
和C++里面一样,有入栈,弹栈,查找函数
import java.util.*;(引入包含栈类的头文件)
相关函数介绍
boolean empty()
测试堆栈是否为空。
E peek()
查看堆栈顶部的对象,但不从堆栈中移除它。
E pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item)
把项压入堆栈顶部。
int search(Object o)
返回对象在堆栈中的位置,以 1 为基数。
java入栈出栈的代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java入栈出栈的代码是什么、java入栈出栈的代码的信息别忘了在本站进行查找喔。






