光阴似箭催人老,日月如移越少年。
http://m.blog.csdn.net/article...
如圖,首先得明白當1,finally中沒有return的時候:finally中没有return的时候:会先执行try里面的,return会执行但是没有真正的return,此时去执行了finally里面的语句,然后再返回来执行return,所以如上题x1:1,然后return x++;这时候它会返回1出去,但是finally是无论如何都会执行的,所以它并不是立刻返回,而是先执行finally里的语句,然后得到 x3:3會先執行try裡面的,return會執行但沒有真正的return,此時去執行了finally裡面的語句,然後再返回來執行return,所以如上題x1:1,然後return x++;這時候它會返回1出去,但是finally是無論如何都會執行的,所以它並不是立刻返回,而是先執行finally裡的語句,然後得到x3:3,但是,重點是:因為finally中沒有return ,所以finally中對x的改變都不會影響之前return的值,因為之前return出去的是1;所以即使後面的finally重新改變的x的值,然後再次執行return,但是依舊返回之前的1.。 是說return 出去的時候是幾就是幾,除非finally重新return才會改變2,finally中有return的時候:會先執行try裡面的,return會執行但是沒有真正的return此時去執行了finally裡面的,然後執行finally裡面的return,直接回來。
finally
return
try
x1:1
x3:3
望採納。
程式碼流程宣告變數x = 1x = 1抓到异常 执行return x++ 此时x = 2,但是x++这个值是1,但是没有执行return这个动作finally 执行, x = 3, 然后return抓到例外執行return x++ 此時x = 2,但是x++ code>這個值是1,但是沒有執行return這個動作
x = 1
return x++
x = 2
x++
1
x = 3
x++ code>這個值是1,但是沒有執行return這個動作
先拋出異常,然後先回傳x值(1),之後類別裡面的x再自增1,不知道對不對,我也是初學。
return x++運算符,先左邊返回,然後x自增1。 return ++x應該回傳2
表達式++X的意思是:X加一,且表達式的值為X加一;
表達式X++的意思是:X加一,但表達式的值仍為X。
1.在try catch finally中的任何地方有return的地方,都是先把當前值保存到棧中,但是並不是立即返回,後面的依舊會執行,finally中的語句總是會被執行。但是傳回的值,已經事先放在了堆疊中的,所以回傳的依然是1,你把return 語句分別放在try catch finally中,可以依序看到執行不同的結果。
http://m.blog.csdn.net/article...
如圖,首先得明白當
1,
finally
中沒有return
的時候:finally
中没有return
的时候:会先执行
try
里面的,return会执行但是没有真正的return,此时去执行了finally里面的语句,然后再返回来执行return,所以如上题x1:1
,然后return x++;这时候它会返回1出去,但是finally是无论如何都会执行的,所以它并不是立刻返回,而是先执行finally里的语句,然后得到x3:3
會先執行try
裡面的,return會執行但沒有真正的return,此時去執行了finally裡面的語句,然後再返回來執行return,所以如上題x1:1
,然後return x++;這時候它會返回1出去,但是finally是無論如何都會執行的,所以它並不是立刻返回,而是先執行finally裡的語句,然後得到x3:3
,但是,重點是:因為finally中沒有return ,所以finally中對x的改變都不會影響之前return的值,因為之前return出去的是1;所以即使後面的finally重新改變的x的值,然後再次執行return,但是依舊返回之前的1.。 是說return 出去的時候是幾就是幾,除非finally重新return才會改變2,finally中有return的時候:
會先執行try裡面的,return會執行但是沒有真正的return此時去執行了finally裡面的,然後執行finally裡面的return,直接回來。
望採納。
程式碼流程
finally 執行,宣告變數
x = 1
x = 1
抓到异常 执行
return x++
此时x = 2
,但是x++
这个值是1
,但是没有执行return
这个动作finally 执行,
x = 3
, 然后return
抓到例外執行return x++
此時x = 2
,但是x++ code>這個值是
1
,但是沒有執行return
這個動作x = 3
, 然後return
跳回.🎜先拋出異常,然後先回傳x值(1),之後類別裡面的x再自增1,不知道對不對,我也是初學。
return x++運算符,先左邊返回,然後x自增1。 return ++x應該回傳2
表達式++X的意思是:X加一,且表達式的值為X加一;
表達式X++的意思是:X加一,但表達式的值仍為X。
1.在try catch finally中的任何地方有return的地方,都是先把當前值保存到棧中,但是並不是立即返回,後面的依舊會執行,finally中的語句總是會被執行。但是傳回的值,已經事先放在了堆疊中的,所以回傳的依然是1,你把return 語句分別放在try catch finally中,可以依序看到執行不同的結果。