1. 程式人生 > >final、finally、finalize分別有什麼作用

final、finally、finalize分別有什麼作用

1、final可以修飾變數、方法、類

final修飾變量表示這個變數就是個常量;(final修飾基本資料型別時,表示這個變數是一個常量,final修飾一個物件時表示這個物件的引用是不可修改的,但物件的屬性值是可以修改)

final修飾方法表示這個方法不能被覆蓋;

final修飾類表示這個類不能被繼承;

重點來了:當在方法中使用內部類時,若內部類要呼叫這個方法的變數時,需要將這個變數用final修飾。程式碼:

public class Outter {
    public void out(){
        final int out=0;;
        class Inner{
            public Inner(int i){
                i=1;
            }
            public void in(){
                int x=out;
            }
        }
    }
}
原因:內部類不會因為方法呼叫的完成而消亡,如果將out變數不定義為final,這個方法執行完成以後,out變數也會消失,當內部類呼叫自己的方法需要out變數時,就會找不見。如果定義為final,就會將這個變數複製一份給內部類,內部類在執行自己方法時就會在自己的類中找見。

2、finally語句塊是在try-catch時使用或在try之後使用,在捕獲異常處理完成之後都會執行finally語句塊,不管有沒有異常。

3、finalize是一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,供垃圾收集時的其他資源回收,例如關閉檔案等

如有錯誤,歡迎大家指正。