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

mfpqipee  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(246)

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

public static int foo(x) {
return 2*x;
}

假设堆栈在foo的条目上包含以下值,从下到上,从左到右读取:
1 2 3
所以3在上面,1在下面。
就在之后 foo 返回,堆栈是1 2 6还是6 2 1?我认为该方法首先获取顶部的值,然后再次将值返回到堆栈的顶部。

hxzsmxv2

hxzsmxv21#

最可能的情况是,您讨论了java虚拟机在内部使用的堆栈(如jvm规范中定义的,java虚拟机堆栈)。在大多数现代编程语言中都有类似的概念。
您的假设是正确的,方法调用和返回是在堆栈顶部完成的。所以, 1 2 3 变成 1 2 6 (这就是为什么它被称为堆栈,很难在某个深埋的位置操纵它)。

相关问题