我目前正在学习输入和输出,我不确定这个问题:
public static int foo(x) { return 2*x; }
假设堆栈在foo的条目上包含以下值,从下到上,从左到右读取:1 2 3所以3在上面,1在下面。就在之后 foo 返回,堆栈是1 2 6还是6 2 1?我认为该方法首先获取顶部的值,然后再次将值返回到堆栈的顶部。
foo
hxzsmxv21#
最可能的情况是,您讨论了java虚拟机在内部使用的堆栈(如jvm规范中定义的,java虚拟机堆栈)。在大多数现代编程语言中都有类似的概念。您的假设是正确的,方法调用和返回是在堆栈顶部完成的。所以, 1 2 3 变成 1 2 6 (这就是为什么它被称为堆栈,很难在某个深埋的位置操纵它)。
1 2 3
1 2 6
1条答案
按热度按时间hxzsmxv21#
最可能的情况是,您讨论了java虚拟机在内部使用的堆栈(如jvm规范中定义的,java虚拟机堆栈)。在大多数现代编程语言中都有类似的概念。
您的假设是正确的,方法调用和返回是在堆栈顶部完成的。所以,
1 2 3
变成1 2 6
(这就是为什么它被称为堆栈,很难在某个深埋的位置操纵它)。