亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段程序運行以后輸出什么?為什么?

這段程序運行以后輸出什么?為什么?

我什么都不知道 2015-12-16 23:31:58
public?class?TestFinal{ ????public?static?void?main(String?args[]){ ????????System.out.println(doSomething()); ????} ???? ????public?static?int?doSomething(){ ????????try{ ????????????return?1; ????????}catch(Exception?e){ ????????}finally{ ????????????return?2; ????????} ????} }
查看完整描述

4 回答

已采納
?
喬小欠兒

TA貢獻18條經驗 獲得超15個贊

我的理解是,當走到try里時return返回的1被存在一個臨時的變量里,此時若沒有發生異常,一定會進入到finally代碼塊里(聽我這的一個老工程師說底層其實是使用了goto方法進入到finally里的)。此時finally里再次使用return把2賦到了剛才存儲1的臨時變量里。然后返回的值就變成了2。

不過在項目中是不推薦在finally里使用return的

查看完整回答
反對 回復 2015-12-17
?
J_Coder

TA貢獻1條經驗 獲得超0個贊

try catch finally 這種機制要求finally塊中的語句必須執行,所以最終會返回2而不是1.

查看完整回答
反對 回復 2015-12-17
?
Caballarii

TA貢獻1123條經驗 獲得超629個贊

當try中語句return之前會先執行finally中的語句,但這里在finally里面return了,所以實際不會return 1,而是return 2

最后結果是2

查看完整回答
反對 回復 2015-12-17
?
天啟之魂

TA貢獻174條經驗 獲得超85個贊

.................我覺得編譯應該會失敗把.....語法明顯有問題啊

返回1以后,finally語句就執行不到了

查看完整回答
反對 回復 2015-12-16
  • 4 回答
  • 0 關注
  • 1816 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號