gpt4 book ai didi

java - 在 Java 中调用方法后会发生什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:21 24 4
gpt4 key购买 nike

这看起来是个愚蠢的问题,但我发现很难答对。我问过不同的人,但得不到理想的答案。

我想知道我们在Java中调用一个普通方法后会发生什么(在单线程环境中提供)。

我的理解是:

  1. 弹出所有当前堆栈变量并存储在某处(哪里?)
  2. 当前方法调用暂停
  3. 新调用方法的参数入栈
  4. 方法代码运行
  5. 方法运行结束后,堆栈再次清空,旧堆栈内容再次恢复。 (如果函数返回一个值会发生什么?)。
  6. 代码继续调用方法。

这是一个非常不完整且可能是错误的答案。有人可以提供更详细的描述吗?

非常感谢。

最佳答案

不,这实际上相当准确:

1) 当前栈变量留在栈中

2)当前方法暂停

3) 新调用方法的参数入栈

4)方法代码运行

5) 方法运行结束后,弹出堆栈。被调用方法的堆栈变量不再有效 - 此时它们不再“存在”。

6) 我们将返回值(如果有的话)传递给调用者

7) 代码继续调用方法。它的所有堆栈变量都保持不变。

==============================

附录:

@凯文-

  • 从概念上讲,我认为您的理解大致正确。我澄清了几点,希望对您有所帮助。

  • 如果您想深入了解 JVM 如何实现“方法调用”,David Wallace 的链接非常好。

  • 这里很好地概述了“堆栈”的工作原理。任何堆栈,调用任何子程序 - 不仅仅是 Java:http://en.wikipedia.org/wiki/Call_stack

  • 最后,Marko Topolnik 是正确的。 “现实”几乎总是非常复杂,以至于无法给出一个简单的、放之四海而皆准的答案。但我绝对认为你的理解是好的。至少在 10,000 英尺高度。

恕我直言...

关于java - 在 Java 中调用方法后会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com