JVM棧(5) 方法返回位址 一些附加資訊

2021-10-18 04:38:33 字數 488 閱讀 6472

當乙個方法開始執行後,只有兩種方式可以退出這個方法:

執行引擎遇到任意乙個方法返回的位元組碼指令(return),會有返回值傳遞給上層的方法呼叫者,簡稱正常完成出口;

在方法執行的過程中遇到了異常(exception),並且這個異常沒有在方法內進行處理,也就是只要在本方法的異常表中沒有搜尋到匹配的異常處理器,就會導致方法退出。

方法退出的本質就是當前棧幀出棧的過程,此時需要恢復上層方法的區域性變數表、運算元棧、將返回值壓入呼叫者棧幀的運算元棧、設定pc暫存器的值等,讓呼叫者方法繼續執行下去。

正常完成方法執行和異常完成方法執行的區別:

jvm棧(1)-----棧的作用是什麼?

jvm棧(2)-----區域性變數表

jvm棧(3)-----運算元棧

jvm棧(4)-----動態鏈結

jvm棧(5)-----方法返回位址&一些附加資訊

5 方法概述

a 什麼是方法?方法就是完成特定功能的 塊,就是對一段功能邏輯進行封裝,以實現重複呼叫。b 方法的格式 修飾符 返回值型別 方法名 引數型別 引數名1,引數型別 引數名2.c 方法的格式詳細說明 1 修飾符 2 返回值型別 用於限定返回值的資料型別 3 方法名 就是乙個名稱,它的存在就是為了方便我們...

5 方法執行時的棧幀

方法執行時通過區域性變數表完成引數值到引數變數列表的傳遞過程。非static方法第乙個slot儲存物件的例項 也就是this引用 slot是可以重用的,slot可以在超出變數作用域後存放之後的變數。區域性變數不像類變數一樣存在準備階段 附上系統預設的初值 因此必須進行初始化。方法退出時相當於把當前棧...

Java基礎》5 方法

僅供自己記錄學習,無它用,歡迎指導!定義乙個方法的格式 public static void 方法名稱 方法名稱的命名規則和變數一樣,使用小駝峰。方法體 也就是大括號當中可以包含任意條語句。注意事項 1.方法定義的先後順序無所謂。2.方法的定義不能產生巢狀包含關係。3.方法定義好了之後,不會執行的,...