java - 问题如图,为什么返回值是1
大家讲道理
大家讲道理 2017-04-18 09:56:11
0
7
317

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(7)
左手右手慢动作

http://m.blog.csdn.net/article...

PHPzhong

如圖,首先得明白當
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,直接回來。

望採納。

阿神

程式碼流程
宣告變數x = 1x = 1
抓到异常 执行return x++ 此时x = 2,但是x++这个值是1,但是没有执行return这个动作
finally 执行, x = 3, 然后return抓到例外執行return x++ 此時x = 2,但是x++ code>這個值是1,但是沒有執行return這個動作

finally 執行, 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中,可以依序看到執行不同的結果。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板