Java-final修飾符__java

來源:互聯網
上載者:User
final關鍵字可以用於修飾類、變數和方法。final修飾變數時,表示該變數一旦獲得了初始值就不可改變。
final成員變數

final修飾的類Field、執行個體Field能指定初始值的地方如下:
—>類Field:必須在靜態初始化塊中或聲明該Field時指定初始值。
—>執行個體field:必須在非靜態初始化塊、聲明該Field或構造器中指定初始值。

如果在普通初始化塊中已經為某個執行個體Field指定了初始值,則不要再在構造器中為該執行個體Field指定初始值。類Field同理。

/** * final成員變數測試 * 該程式詳細示範了final修飾成員變數的各種具體情形 */package Chapte5;public class FinalVariableTest {    //定義成員變數時指定預設值,合法    final int a = 66;    //下面變數將在構造器或初始化塊中分配初值,合法    final String str;    final int c;    final static double d;    //ch既沒有在定義時指定初值,也沒有在構造器或初始化塊中分配初值,這樣定義不合法    //final char ch;    {        str ="hello";    }    static{        d=5.6;    }    public FinalVariableTest(){        c=5;    }    public void changeFinal(){        //不能在普通方法中為final變數指定初值或更改初值        //d=1.2;    }    public static void main(String[] args) {        FinalVariableTest ft= new FinalVariableTest();        System.out.println(ft.d);        System.out.println(ft.a);    }}
final局部變數

使用final修飾局部變數時,既可以在定義時指定預設值,也可以不指定預設值。如果final修飾的局部變數在定義時沒有指定預設值,則可以在後面的程式碼片段中對該final變數賦初值,但只能一次,不能重複賦值。 final修飾基本類型變數和參考型別變數的區別

當使用final修飾類型變數時,不能對基本類型變數重新賦值,因此基本類型變數不能改變。單對於參考型別變數而言,它儲存的僅僅是一個引用,final只能保證這個參考型別變數所引用的地址不會改變,既一直引用同一個對象,但這個對象完全可以發生改變。 定義宏變數

final變數只要滿足三個條件,它就不再是一個變數,而是一個直接量(宏變數):
(1)使用final修飾;
(2)在定義該final變數時就指定了初始值;
(3)該初始值可以在編譯時間就被確定下來。 final方法

final修飾的方法不可被重寫。 final類

final修飾的類不可以繼承。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.