实参求值
main 先计算 checkout(120.0) 的实参值;新方法尚未入栈。
JAVA 方法 · 动态栈帧
沿八个步骤观察实参求值、方法入栈、局部变量建立、返回值传递,以及调用者如何从等待位置恢复。
黄色行是当前事件发生的位置
1static double calculateTax(double amount) {
2 double rate = 0.06;
3 return amount * rate;
4}
5static double checkout(double amount) {
6 double tax = calculateTax(amount);
7 return amount + tax;
8}
9public static void main(String[] args) {
10 double result = checkout(120.0);
11 System.out.println(result);
12}
main 先计算 checkout(120.0) 的实参值;新方法尚未入栈。
每张卡只保存本次调用自己的变量
把步骤推进到“返回 7.2”。执行 return amount * rate;、尚未弹出栈帧的这一刻,谁在栈顶?