1. 程式人生 > >java面試題之final、finalize和finally的區別

java面試題之final、finalize和finally的區別

finally:finally是一個關鍵字,與try和catch一起用於異常的處理,finally塊一定會執行,無論在try快中是否有發生異常。
finalize:finalize方法是在物件被回收之前呼叫的方法,給物件自己最後一個復活的機會,但是什麼時候呼叫finalize沒有保證。
final是最重要的,以下重點介紹以下:
1、可以修飾類,不可以被繼承;
2、可以修飾方法,不可以被重寫;JVM會嘗試將其內聯,以提高執行效率
3、可以修飾變數,不可以被改變。如果修飾引用,那麼表示引用不可變,引用指向的內容不可變。
4、可以修飾常量,在編譯階段會存入常量池中;
5、編譯器對final域要遵守的兩個重排序規則:
  a、在建構函式內對一個final域的寫入,與隨後把這個被建構函式物件的引用賦值給一個引用變數,這兩個操作之間不能重排序;
  b、初次讀一個包含final域的物件的引用,與隨後初次讀這個final域,這兩個操作之間不能重排序。