這看起來像一個愚蠢的問題,但我發現很難做到這一點。我問過不同的人,但無法得到理想的答案。在Java中調用某個方法後會發生什麼
我想知道在Java中調用常規方法(在單線程環境中提供)後會發生什麼。
我的理解是:
- 目前所有的堆棧變量POP操作,並存儲某處(哪裏?)
- 目前的方法調用停止
- 新調用方法的參數都推到堆棧
- 方法代碼運行
- 該方法完成運行後,堆棧將再次清空,舊的堆棧內容將再次被恢復。 (如果函數返回一個值會發生什麼?)。
- 代碼繼續調用方法。
這是一個非常不完整,可能是錯誤的答案。有人可以提供更詳細的描述嗎?
非常感謝。
我很確定棧沒有被清空,否則你永遠不會得到StackOverflowException。 – MightyPork
您的步驟(1)和(5)不會發生。還有一個步驟,即將方法的返回值推送到堆棧上(除非它當然無效)。 –
閱讀http://www.javaworld.com/jw-06-1997/jw-06-hood.html - 這裏都詳細描述了它。 –