java中final、finally、finalize的區別

簡單區別


  1. final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
  2. finally是異常處理語句結構中的一部分,表示老是執行。
  3. finalize是Object類的一個方法,在垃圾收集齊執行的時候會調用被回收對象的此方法提供,提供垃圾收集時的其餘資源回收。

詳細區別


final關鍵字

  • 定義變量,包括靜態和非靜態的。

  final修飾的是一個基本對象,就表示這個變量被賦予的值是不可變的,它是一個常量。而且表示它只能被賦值一次。java

  被final定義的變量必須被初始化:1》在定義時被初始化。 2》final變量在初始化模塊中初始化,不能夠在靜態塊中初始化。 3》靜態final變量在靜態初始化塊中初始化,不能夠在初始化模塊中初始化。 4》final變量能夠在類的構造器中初始化,但靜態final變量不能夠。spa

 被final定義的方法,不能夠被子類重寫,但不影響它被子類繼承。code

 被final定義的類不能被繼承,因爲關鍵字abstract定義的抽象類必須被繼承它的子類重寫而實現抽象類中的方法,因此final和abstract不能用來修飾同一個類。對象

finally關鍵字

 finally關鍵字只能用於try/catch語句中:blog

try{

}catch{

}finally{
    System.out.println("執行了finally語句塊"); 
}
 輸出"執行了finally語句塊"說明程序拋出了異常,執行finally語句塊捕獲程序拋出的異常以後,即不加處理,
也不繼續向上拋出異常。
 並且finally語句塊不受return,continue和break關鍵字的阻礙。

inalize關鍵字
最後,咱們再來看看finalize,它是一個方法,屬於java.lang.Object類,它的定義以下:Java代碼protected void finalize() throws Throwable { }衆所周知,finalize()方法是GC(garbage collector)運行機制的一部分。
相關文章
相關標籤/搜索