【发布时间】:2020-04-24 07:53:41
【问题描述】:
这似乎是一个愚蠢的问题。我尝试了不同的资源来了解 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;
}
【问题讨论】:
-
它们遵循与非空方法相同的方法。想想 void 方法最后有一个
return;。他们仍然有一个 return 声明,它只是隐含的。因此它们以相同的方式从堆栈中弹出。 -
如果我们要明确的 return 语句是有意义的。我应该假设有一个return语句吗?
-
编译后的字节码中肯定有
return指令。 -
@SeanBright 出于好奇,有什么办法可以确定吗?
-
可以看字节码。有工具可以做到这一点,大多数 IDE 都有某种字节码查看器。