成員初始化與final

成員初始化


成員初始化的順序:先靜態對象(如果它們尚未因前面的對象創建過程而被初始化),然後再是“非靜態”對象。

一、 顯示的靜態初始化

public class Spoon{
    static int i;
    static double j;
    static{
        i = 27;
        j = 10.23;
    }   
}

這段代碼中static塊只執行一次,即只在第一次生成對象的時候。

二、數組初始化

如:

int[ ] a1 = {1,2,3,4,5};
      int[ ] a2;
    a2 = a1;

以上代碼只是將a1的引用複製給了a2,即操作a2數組就等於操作a1,因爲a1和a2指向的是同一個引用。

三、可變參數列表

public class OverloadVarargs{
    static void f(float i,Character... args){
        System.out.println("first");
    }   
    static void f(char c,Character... args){
        System.out.println("second");
    }
    public static void main(String[] args){
        f(1,'a');
        f('a','b');
    }   
}   

以上可變參數的方法重載,最好在可變參數之前加上一個非可變參數,因爲這樣可以使java編譯器更準確的選擇具體哪一個重載方法。



關於final的使用

final關鍵字,分三種情況來分析:數據、方法和類。

1.final數據,必須是基本數據類型,用final修飾表這是一個常量,不可被修改。(static強調只有一份,final說明是一個常量)

2.final參數,將參數指明爲final,意味着無法在方法中更改參數引用所指向的對象。

3.final方法,將某個方法指定爲final說明,該方法被鎖定,防止任何繼承類來修改。

4.final類,將某個類指定爲final則說明,該類是最終的,不希望被繼承,其該類下所有的方法也是final。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章