final關鍵字之final變量

final類

在java的類,方法和變量前面,可以加上final關鍵字。final關鍵字表示它修飾的類,方法和變量不可以被改變。



final變量

final變量表示該變量是不可被改變的,其實就是常量。因爲在java中不能用const保留字來定義常量,所以需要使用常量的場合,可以使用final關鍵字來修飾。

例如: final int CONST_VAR = 2;

如果final變量是簡單類型的變量,那麼變量的值一旦初始化後,就不能改變。如果final變量是引用類型的變量,那麼不能改變這個變量的引用,但是可以改變這個變量所引用的對象的屬性,例子:


//定義一個Aclass類


class Aclass
{
    private int a;
    public Aclass(){
        a = 100;
    }
    public void setA(int theA)
    {
        a=theA;
    }
    public int getA()
    {
        return a;
    }
}



//定義一個類來測試final引用變量

public class TestFinal
{
    final Aclass aClass = new Aclass();
    public static void main(String[] age)
    {
        TestFinal tf = new TestFinal();
        tf.aClass.setA(1);
        System.out.println(tf.aClass.getA());
    }
}


分析:在這個例子中,我們定義了一個類Aclass,這個類只有一個實例變量a,並且有相應的存取方法來對它進行存取。然後,在類TestFinal中,我們定義了一個final的引用類型的變量aClass,這個變量的引用是不能改變的,但是我們可以將這個引用變量指向的對象的屬性進行修改。在這裏,我們通過調用實例的setA()方法來修改它實例變量a,這時這個靜態引用變量指向的對象的屬性值被修改爲1.

注意:根據java命名規範,如果在編譯的時候,就可以確定final變量的值,那麼此變量的名字應該都大寫,並且指出完整含義,如果需要用幾個單詞描述,那麼單詞直接用“_”來分隔,例如:static final MAX_TAX_RATE = 20;

相反的,在下面情況下可以不使用命名規範:final變量無法在編譯的時候就獲得值,必須在執行時才能得到值。例如,上述例子中的aClass就是一個例子。
final Aclass aClass = new Aclass();
在編譯的時候,程序不會執行new動作來實例化一個Aclass,並且賦值給aClass,所以就沒有上面的命名規則來給final變量命名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章