Finally的執行時機

2022-07-17 15:12:14 字數 686 閱讀 7738

有人問下面**是return先執行,還是finally先執行.

int i = 1;

tryfinally

很多人都回答是finally先執行,因為他們知道是返回0.但是其實真正意義上來講是return先開始執行的,只是return中間會跳轉到finally**執行,然後再跳轉回來。

return的執行 是分兩步的 第一步計算return 右邊表示式的值,然後進行返回。

finally 在return的右邊表示式計算完畢後執行,當finally執行完畢後,return正式返回右邊表示式的值.

所以我們才稱之 「在return語句的中間執行」

在上面例子中,右邊表示式簡單,但是也要計算的,只是直接得到計算結果而已。然後執行finally,最後返回0.

看看下面的例子,你就明白了。

package test;

public class finallytest finally

}public static container print(container c)

public static void main(string args)

static class container

}輸入如下:

return executed

print i=1

finally executed

main i=0

runtime 執行時機制

首先,第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?這個問題我就不跟大家繞彎子了,直接告訴大家,runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了runtime的c語言 r...

runtime 執行時機制

必備常識 1.ivar 成員變數 2.method 成員方法相關應用 1.nscoding 歸檔和解檔,利用runtime遍歷模型物件的所有屬性 2.字典 模型 利用runtime遍歷模型物件的所有屬性,根據屬性名從字典中取出對應的值,設定到模型的屬性上 3.kvo 利用runtime動態產生乙個類...

runtime 執行時機制

runtime 執行時機制 一 runtime是什麼 1 runtime是乙個全動態語言,是基於c語言的庫,裡面包含了很多底層的c語言函式。2 平時編寫的oc 在程式執行過程中,其實最終都是轉成了runtime的c語言 runtime算是oc方法的底層實現,換句話說oc的實現也就是runtime的底...