成員初始化
成員初始化的順序:先靜態對象(如果它們尚未因前面的對象創建過程而被初始化),然後再是“非靜態”對象。
一、 顯示的靜態初始化
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。