国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java中關于return和finally的問題

2019-11-14 15:29:16
字體:
來源:轉載
供稿:網友

這兩天學到了異常機制,其中try...catch...finally個人覺得算是重要的一環(huán),聯系到之前學的語句,遇到了return和finally這個好玩的問題,經過試驗,發(fā)現計算機語言這種邏輯關系果然微妙,以下是自己的見解,若有不對之處,望各位前輩指點:

首先看第一段代碼

 1 public class return_finally{ 2     public static void main(String[] args){ 3         System.out.PRintln( m_1() ); 4     } 5     public static int m_1(){ 6         int i=10; 7         try{ 8             System.out.println( "start" ); 9            return i+=10;10         }catch(Exception e){11             System.out.println( "error: "+e );12         }finally{13             if(i>10){14                 System.out.println( i );15             }16             System.out.println( "finally" );17         }18         return i;19     }20 }
第一段代碼輸出結果如下:
    start
    20
    finally
    20
注意,此時第二個return是在finally語句外部,按照return與finally同時出現的規(guī)定,我們可以理解為第一個return只是一個條件,他的作用只是尋找finally語句,實際只是執(zhí)行了一個i+=10的運算,然后直接進入finally語句,最后return返還結果。
我們再看第二段代碼:
 1 public class return_finally{ 2     public static void main(String[] args){ 3         System.out.println( m_1() ); 4     } 5     public static int m_1(){ 6         int i=10; 7         try{ 8             System.out.println( "start" ); 9            return i+=10;10            11         }catch(Exception e){12             System.out.println( "error: "+e );13         }finally{14             if(i>10){15                 System.out.println( i );16             }17             System.out.println( "finally" );18             return 50; 19         }20     }21 }

第二段代碼與第一段的區(qū)別只是將最后的return放到了finally語句當中,我們可以猜猜輸出的結果:

    start

    20

    finally

    50

此時執(zhí)行的return已經將之前運算結果所得的20覆蓋,并且返還了50這個數值,也就是說在finally語句中的return是執(zhí)行了,呃,應該可以這樣說吧~~

還有第三段代碼,大家慢慢享受:

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就直接將那個空間中的“舊值”取出來然后返還回去。

  以上純屬理解,希望大家多多指點,謝謝各位的幫助!

 

 

    

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 拉萨市| 日照市| 西畴县| 江达县| 穆棱市| 依安县| 汉沽区| 叶城县| 德保县| 西充县| 珲春市| 清水河县| 望谟县| 呈贡县| 南华县| 大足县| 闻喜县| 皮山县| 泸州市| 治多县| 临江市| 吉林市| 绵阳市| 西青区| 永康市| 江永县| 都兰县| 临西县| 股票| 集安市| 桃园县| 和龙市| 乌鲁木齐市| 建始县| 光山县| 满城县| 河南省| 栾川县| 通海县| 鹤峰县| 通州市|