首页 > 解决方案 > void 方法是如何从调用堆栈中弹出的?

问题描述

这似乎是一个愚蠢的问题。我尝试了不同的资源来了解 void 方法是如何从调用堆栈中弹出的。我无法弄清楚,寻求帮助。提前致谢。
一个简单的例子 -

public static void main(String args[]){
 int sum = sum(2,3);
 System.out.println(sum);
}
public static int sum(int first, int second){
   return first + second;
}

因此,对于上述情况,示例调用堆栈将分配两个包含方法调用详细信息的堆栈帧,如下所示 -
在此处输入图像描述

标签: javacallstack

解决方案


来自The Java® Virtual Machine Specification-Java SE 8 Edition [2.11.8]

...返回指令用于从声明为 void 的方法、实例初始化方法以及类或接口初始化方法返回。

因此,以下两种方法的字节码是相同的(从BCV来看),即一条return指令:

public void test() {
    return;
}

public void test() {
}

推荐阅读