栈结构是后进先出吗,那如果定栈内存放两个局部变量,那要先访问先压入变量的怎么办?

解决方案 »

  1.   

    大哥呀,是我没描述清楚吗?我是想问,栈结构如果是后进先出的话,访问栈内数据的时候是怎么样的
    ...
    int i
    int j
    int k
    ...
    这样,如果要先访问i咋办?我知道能,但为什么,不是要后进先出的吗?
      

  2.   

    如果你非要实现这种功能。你可以先弹出在i之后入栈的元素。并把他们存储在一个List里面。然后就可以取i的值了。然后再把List里面的值倒序压进去。
      

  3.   

    不是我非要实现这种功能,同时定义多个局部变量的时候应该很多吧,我想知道如果这时我没按次序访问的话,jvm是怎么工作的。我程序内我应该直接就可以用
    ...
    int i=1
    int j=1
    int k=1
    int l=i+j
    ...
    这样的程序直接可以用
      

  4.   

    stack本来就是后进先出的,如果你一定要这么干,先问你为什么要使用stack这种数据结构,你使用list不是更好吗。如果你一定要使用stack做这件事,从stack的原理来看,你必须使用辅助变量来操作。
      

  5.   

    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);
    }
    }
    意思是这样的东西不能正常运行?
      

  6.   

    还是没看懂你的意思
    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);
    }
    }这段代码和栈有关吗?
      

  7.   

    每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当前常量池。每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这个帧来存储参数、局部变量、中间运算结果等等。http://developer.51cto.com/art/201010/229836.htm