麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

Java中關于return和finally的問題

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

這兩天學到了異常機制,其中try...catch...finally個人覺得算是重要的一環(huán),聯(liá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ā)表
主站蜘蛛池模板: 欧美一级黄色网 | 毛片在哪看 | 国产欧美在线一区二区三区 | 久久久久久久99 | 国产韩国精品一区二区三区久久 | 毛片视频播放 | 久久新地址 | 黄色片免费在线播放 | 毛片大全免费 | 九九黄色| 久草视频在线资源 | 久久久免费观看完整版 | 人成免费a级毛片 | 亚洲成人免费电影 | 久久九九热re6这里有精品 | 欧美成人一区免费视频 | 一道本不卡一区 | 成人三级视频网站 | 国产三级精品最新在线 | 色视频在线观看 | 欧美一级淫片免费视频1 | 欧美一级特黄aaaaaa在线看首页 | 欧美一级网 | 国产精品成人一区 | 久久精品视频亚洲 | 日韩一级片黄色 | 国产盼盼私拍福利视频99 | 欧美日韩在线播放 | 欧美日韩免费观看视频 | 欧美成人一区二区视频 | 欧美亚洲另类在线 | 欧美日本一 | 久久久无码精品亚洲日韩按摩 | 91久久久国产精品 | 国产精品视频导航 | 久久精品日产高清版的功能介绍 | 99ri在线| 亚洲国产成人久久一区www妖精 | 九色激情网 | xxxx hd video 69| 国产精品区一区二区三区 |