void方法如何从调用堆栈中弹出?

时间:2020-01-06 19:17:31

标签: java callstack

这似乎是一个愚蠢的问题。我尝试了其他资源,以了解如何从调用堆栈中弹出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;
}

因此对于上面的示例,调用堆栈将分配两个包含以下方法调用详细信息的堆栈帧-
enter image description here

1 个答案:

答案 0 :(得分:3)

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

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

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

public void test() {
    return;
}

public void test() {
}