Java 输入和输出、方法调用和堆栈框架

Java 输入和输出、方法调用和堆栈框架,java,input,stack,frame,Java,Input,Stack,Frame,我目前正在学习输入和输出,我不确定这个问题: public static int foo(x) { return 2*x; } 假设堆栈在foo条目上从下到上包含以下值,从左到右读取: 1 2 3 3在上面,1在下面 就在foo返回后,堆栈是1 2 6还是6 2 1? 我认为该方法首先将值放在堆栈顶部,然后将值再次返回到堆栈顶部。最有可能的情况是,您讨论的是Java虚拟机内部使用的堆栈(如中所定义)。在大多数当代编程语言中都存在类似的概念 您的假设是正确的,方法调用和返回是在堆栈的顶部完成的。

我目前正在学习输入和输出,我不确定这个问题:

public static int foo(x) {
return 2*x;
}
假设堆栈在foo条目上从下到上包含以下值,从左到右读取:

1 2 3

3在上面,1在下面

就在
foo
返回后,堆栈是1 2 6还是6 2 1?
我认为该方法首先将值放在堆栈顶部,然后将值再次返回到堆栈顶部。

最有可能的情况是,您讨论的是Java虚拟机内部使用的堆栈(如中所定义)。在大多数当代编程语言中都存在类似的概念


您的假设是正确的,方法调用和返回是在堆栈的顶部完成的。因此,
123
变成了
16
(这就是为什么它被称为堆栈,很难在某个深埋的位置操纵它).

我不明白你的问题,这里没有递归性。@Dragos Rachieru没有。但我认为这里更多的是关于堆栈框架的概念?我不确定。我不明白你从哪里得到的12 6,不是应该是2 4 6吗?