void 方法是如何从调用堆栈中弹出的?
How are void methods popped from the call stack?
这似乎是一个愚蠢的问题。我尝试了不同的资源来了解如何从调用堆栈中弹出 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;
}
因此,对于上面的例子,调用堆栈将分配两个包含方法调用详细信息的堆栈帧,如下所示 -
来自The Java® Virtual Machine Specification-Java SE 8 Edition [2.11.8]:
...the return instruction is used to return from methods declared to be void, instance initialization methods, and class or interface initialization methods.
因此以下两种方法的字节码是相同的(从BCV来看),即一条return
指令:
public void test() {
return;
}
public void test() {
}
这似乎是一个愚蠢的问题。我尝试了不同的资源来了解如何从调用堆栈中弹出 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;
}
因此,对于上面的例子,调用堆栈将分配两个包含方法调用详细信息的堆栈帧,如下所示 -
来自The Java® Virtual Machine Specification-Java SE 8 Edition [2.11.8]:
...the return instruction is used to return from methods declared to be void, instance initialization methods, and class or interface initialization methods.
因此以下两种方法的字节码是相同的(从BCV来看),即一条return
指令:
public void test() {
return;
}
public void test() {
}