final,finally和finalize區別,catch裏面有return語句的執行順序

/*
*   1:final,finally和finalize的區別
*       final:最終的意思,能夠修飾類,成員變量,成員方法
*                  修飾類:類不能被繼承
*                  修飾方法:方法不能被重寫
*                  修飾變量:變量變常量
*      finally:是異常處理的一部分,用於釋放資源
*           通常來講,代碼確定會執行,特殊狀況:在執行到finally以前退出了
*      finalize:是Object類的一個方法,用於垃圾回收
*    2:若是catch裏面有return語句,請問finally裏面的代碼還會執行嗎?
*       若是會,請問是在return前,仍是return後
*           會,前;準確的說,應該是在中間
*
*    3:try...catch...finally的格式變形
*       A:try...catch...finally
*       B:try...catch
*       C:try...catch...catch...
*       D:try...catch...catch...finally
*       E:try...finally
*           這種作法的目的是爲了釋放資源
* */
public class FinallyDemo2 {
    public static void main(String[] args) {
        System.out.println(getInt());//30
    }

    public static int  getInt() {
        int a=10;
        try {
            System.out.println(a/0);
            a=20;
        }catch (ArithmeticException e){
            a=30;
            return a;
            /*
            * return a在程序執行到這一步的時候,這裏不是return a而是return 30;這個返回路徑就造成了
            * 可是呢,它發現後面還有finally,因此繼續執行finally的內容,a=40;再次回到之前的返回路徑,繼續走return 30;
            * */
        }finally {
            a=40;
//            return a;//若是是這樣結果就是40
        }
        return  a;
    }
}
相關文章
相關標籤/搜索