final、finally、finalize分別有什麼作用
阿新 • • 發佈:2019-01-22
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是一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,供垃圾收集時的其他資源回收,例如關閉檔案等。
如有錯誤,歡迎大家指正。