程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談Java中return和finally的成績

淺談Java中return和finally的成績

編輯:關於JAVA

淺談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就直接將誰人空間中的“舊值”掏出來然後返還歸去。

  以上純屬懂得,願望年夜家多多指導,感謝列位的贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved