淺談Java中return和finally的成績。本站提示廣大學習愛好者:(淺談Java中return和finally的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談Java中return和finally的成績正文
這兩天學到了異常機制,個中try...catch...finally小我認為算是主要的一環,接洽到之前學的語句,碰到了return和finally這個好玩的成績,經由實驗,發明盤算機說話這類邏輯關系果真奧妙,以下是本身的看法,如有纰謬的地方,望列位先輩指導:
起首看第一段代碼
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() ); } public static int m_1(){ int i=10; try{ System.out.println( "start" ); return i+=10; }catch(Exception e){ System.out.println( "error: "+e ); }finally{ if(i>10){ System.out.println( i ); } System.out.println( "finally" ); } return i; } }
第一段代碼輸入成果以下:
start
20
finally
20
留意,此時第二個return是在finally語句內部,依照return與finally同時湧現的劃定,我們可以懂得為第一個return只是一個前提,他的感化只是尋覓finally語句,現實只是履行了一個i+=10的運算,然後直接進入finally語句,最初return返還成果。
我們再看第二段代碼:
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() ); } public static int m_1(){ int i=10; try{ System.out.println( "start" ); return i+=10; }catch(Exception e){ System.out.println( "error: "+e ); }finally{ if(i>10){ System.out.println( i ); } System.out.println( "finally" ); return 50; } } }
第二段代碼與第一段的差別只是將最初的return放到了finally語句傍邊,我們可以猜猜輸入的成果:
start
20
finally
50
此時履行的return曾經將之前運算成果所得的20籠罩,而且返還了50這個數值,也就是說在finally語句中的return是履行了,呃,應當可以如許說吧~~
還有第三段代碼,年夜家漸漸享用:
public class return_finally{ public static void main(String[] args){ System.out.println( m_1() ); } public static int m_1(){ int i=10; try{ System.out.println( "start" ); return i; }catch(Exception e){ System.out.println( "error: "+e ); }finally{ if(i>10){ System.out.println( i ); } System.out.println( "finally" ); i=50; } return i; } }
此時finally語句中多了i=50,那末成果是甚麼呢?
start
finally
10
這就是成果,finally語句中沒有return語句,那末本來的前往值就不會變更。
那末經由過程這三個例子可弗成以如許懂得:
碰著try語句中的return,先把值貯存到一個處所,然後尋覓finally語句,假如語句中有新的算法,就從誰人空間掏出這個值停止運算,finally中有return的話就就把“新值”籠罩誰人空間的“舊值”,並終究前往;假如finally中沒有return就直接將誰人空間中的“舊值”掏出來然後返還歸去。
以上純屬懂得,願望年夜家多多指導,感謝列位的贊助!