当前位置:编程学习 > JAVA >>

关于栈的问题

栈结构是后进先出吗,那如果定栈内存放两个局部变量,那要先访问先压入变量的怎么办? --------------------编程问答-------------------- 自己写个类 当栈用  可以按照自己意愿实现任何功能 --------------------编程问答-------------------- 大哥呀,是我没描述清楚吗?我是想问,栈结构如果是后进先出的话,访问栈内数据的时候是怎么样的
...
int i
int j
int k
...
这样,如果要先访问i咋办?我知道能,但为什么,不是要后进先出的吗? --------------------编程问答-------------------- 如果你非要实现这种功能。

你可以先弹出在i之后入栈的元素。

并把他们存储在一个List里面。

然后就可以取i的值了。

然后再把List里面的值倒序压进去。 --------------------编程问答-------------------- 不是我非要实现这种功能,同时定义多个局部变量的时候应该很多吧,我想知道如果这时我没按次序访问的话,jvm是怎么工作的。我程序内我应该直接就可以用
...
int i=1
int j=1
int k=1
int l=i+j
...
这样的程序直接可以用
--------------------编程问答-------------------- 哥哥们有QQ不,我等着着急,这个想不通我什么都干不下去 --------------------编程问答-------------------- stack本来就是后进先出的,如果你一定要这么干,先问你为什么要使用stack这种数据结构,你使用list不是更好吗。如果你一定要使用stack做这件事,从stack的原理来看,你必须使用辅助变量来操作。 --------------------编程问答--------------------
引用 6 楼 cszddx 的回复:
stack本来就是后进先出的,如果你一定要这么干,先问你为什么要使用stack这种数据结构,你使用list不是更好吗。如果你一定要使用stack做这件事,从stack的原理来看,你必须使用辅助变量来操作。

public class test{
public static void main(string [] args){
int i=1;
int j=1;
int k=1;
int l=i+j;
system.out.println(j);
}
}
意思是这样的东西不能正常运行?
--------------------编程问答-------------------- 还是没看懂你的意思
public class test{
public static void main(string [] args){
int i=1;
int j=1;
int k=1;
int l=i+j;
system.out.println(j);
}
}

这段代码和栈有关吗? --------------------编程问答-------------------- 。。。jvm会把局部变量放到java栈内 --------------------编程问答-------------------- 每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当前常量池。

每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等等。

http://developer.51cto.com/art/201010/229836.htm
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,