Java中final、finally 和 finalize

來源:互聯網
上載者:User

一   final

    final可以用來修飾:

      1. 變數

               若修飾基本類型,則表示常量

               若修飾參考型別,則表示此變數被賦予的引用是不可變的,但其指向的對象是可變的

               若修飾方法的形參,則此形參在方法體內部不可以被賦值

               還有一種更貼切的說法,若一個變數或方法參數被final修飾,就表示它只能被賦值一次,但是Java虛擬機器為變數設定預設值不記做一次賦值。

              被final修飾的變數必須被初始化,有以下幾種方式:

               在定義的時候被初始化;

               final修飾的變數可以在初始化塊裡或方法構造器裡被初始化,不可以在靜態初始化快裡被初始化;

               final修飾的靜態變數可以在靜態初始化塊裡被初始化,不可以在初始化塊裡被初始化。
              這裡順便插一句,static{}語句塊是在類被load時只執行一次,而{}語句塊是在每次執行個體化對象時都執行。

      2. 方法

              final修飾的方法不可以被重寫,但可以被繼續。

              具有private存取權限的方法也可以增加final修飾,但是由於子類無法繼續private方法,因此也無法重寫它。編譯器在處理private方法時,是按照final方法來對待的,這樣可以進步該方法被調用時的效率。不過子類仍然可以定義同父類中的private方法具有同樣結構的方法,但是這並不會產生重寫的效果,而且它們之間也不存在必然聯絡。

      3. 類

             我們最常用的String類就是final的。由於final類不答應被繼續,編譯器在處理時把它的所有方法都當作final的,因此final類比普通類擁有更高的效率。而由關鍵字abstract定義的抽象類別含有必須由繼續自它的子類重載實現的抽象方法,因此無法同時用final和abstract來修飾同一個類。同樣的道理,final也不能用來修飾介面。final的類的所有方法都不能被重寫,但這並不表示final的類的屬性(變數)值也是不可改變的,要想做到final類的屬性值不可改變,必須給它增加final修飾。

二    finally

     它只能用在try/catch語句中,並且附帶著一個語句塊,表示這段語句終極總是被執行。

public final class FinallyTest {      public static void main(String[] args) {         try {             throw new NullPointerException();          } catch (NullPointerException e) {               System.out.println("程式拋出了異常");          } finally {                System.out.println("執行了finally語句塊");          }     }  }

運行結果說明了finally的作用:

1. 程式拋出了異常

2. 執行了finally語句塊

留意:return、continue、break無法阻止finally語句的執行,由於對於每個try塊可以引起退出的語句,在bytecode層面上都會有一個指定的位元組碼與finally關聯.,因此,finally肯定會被執行。但System.exit(0)可以。

三   finalize()

   由於finalize()屬於Object類,因此所有類都有這個方法,Object的任意子類都可以重寫(override)該方法,在其中開釋系統資源或者做其它的清理工作,如封閉輸進輸出資料流。

 

 

原文地址:http://www.csdnjava.com/thread-42983-1-1.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.