public
class
testdemo5
public
static
voidm1(
)public
static
voidm2(
)}輸出結果:
main開始
m1開始
m2開始
m2結束
m1結束
main結束
先執行主函式,輸出main函式開始,緊接著在主函式裡呼叫了m1()方法,進入m1方法體,執行system.out.println(「m1開始」);語句,輸出m1開始,然後呼叫了m2()函式,進入m2函式體,輸出 m2開始 和 m2結束,此時函式已經全部呼叫完畢,返回主函式體,執行呼叫m1()方法後的**塊,輸出了main函式結束。到此,程式執行完畢,產生結果:
main開始
m1開始
m2開始
m2結束
m1結束
main結束
表面上是函式沒執行完而不會進行向下執行,所以造成了巢狀函式呼叫時先呼叫後結束的結果。
在程式的執行過程中,主函式作為程式的入口,先先從主函式開始執行,jvm會呼叫main函式,生成乙個main函式的棧幀,存放在jvm棧中的最下邊,然後由main函式呼叫了m1函式,m1生成乙個m1函式的棧幀,存放在jvm棧中,在main函式棧幀之上,而後又由m1呼叫m2,m2函式生成了m2函式的棧幀,存放在jvm棧中m1棧幀之上。
此時jvm棧中從上到下分別存放著m2棧幀、m1棧幀、main函式棧幀。我們知道,棧是先進後出,所以先出棧的是m2棧幀,而後是m1棧幀,最後乙個是main函式棧幀,因此,m2函式先執行完,而後是m1函式,最後是主函式。
至此,我們可以明白為何巢狀函式先呼叫後結束。
程式結束後呼叫的函式 註冊終止函式
相關函式 exit,atexit,exit 註冊終止函式 1,on exit 標頭檔案 include 定義函式 int on exit void function int void void arg 函式說明 on exit 用來設定乙個程式正常結束前呼叫的函式.當程式通過呼叫exit 或從mai...
PHP函式的巢狀呼叫
一 php xmlns php function example price tax total price price tax echo 是 total 美元 echo 是 examples total 元 example 15.00 0.75 二 執行結果 是 26.25 美元 是 196.87...
函式的巢狀呼叫和遞迴呼叫
巢狀呼叫 在定義函式時,乙個函式內不能再定義另乙個函式,即不能巢狀定義,但可以巢狀呼叫函式,即在呼叫乙個函式的過程中,又呼叫另乙個函式。執行過程 1,執行main函式的開頭部分 2,遇函式呼叫語句,呼叫函式a,流程轉去a函式 3,執行a函式的開頭部分 4,遇函式呼叫語句,呼叫函式b,流程轉去函式b ...