1. 程式人生 > 其它 >程式碼塊及final關鍵字的使用

程式碼塊及final關鍵字的使用

1.程式碼塊的作用:用來初始化類、物件

2.程式碼塊如果有修飾的話,只能使用static.

3.分類:靜態程式碼塊 vs 非靜態程式碼塊

4.靜態程式碼塊

內部可以有輸出語句

隨著類的載入而執行,而且只執行一次

作用:初始化類的資訊

如果一個類中定義了多個靜態程式碼塊,則按照宣告的先後順序執行

靜態程式碼塊的執行要優先於非靜態程式碼塊的執行

靜態程式碼塊內只能呼叫靜態的屬性、靜態的方法,不能呼叫非靜態的結構

5.非靜態程式碼塊

內部可以有輸出語句

隨著物件的建立而執行

每建立一個物件,就執行一次非靜態程式碼塊

作用:可以在建立物件時,對物件的屬性等進行初始化

如果一個類中定義了多個非靜態程式碼塊,則按照宣告的先後順序執行

非靜態程式碼塊內可以呼叫靜態的屬性、靜態的方法,或非靜態的屬性、非靜態的方法

對屬性可以賦值的位置:

①預設初始化
②顯式初始化/⑤在程式碼塊中賦值
③構造器中初始化
④有了物件以後,可以通過"物件.屬性"或"物件.方法"的方式,進行賦值
執行的先後順序:① - ② / ⑤ - ③ - ④

final關鍵字
final:最終的

1.final可以用來修飾的結構:類、方法、變數

2.final 用來修飾一個類:此類不能被其他類所繼承。比如:String類、System類、StringBuffer類

3.final 用來修飾方法:表明此方法不可以被重寫。比如:Object類中getClass();

4.final 用來修飾變數:此時的"變數"就稱為是一個常量

4.1 final修飾屬性:可以考慮賦值的位置有:顯式初始化、程式碼塊中初始化、構造器中初始化

4.2 final修飾區域性變數:尤其是使用final修飾形參時,表明此形參是一個常量。當我們呼叫此方法時,給常量形參賦一個實參。一旦賦值以後,就只能在方法體內使用此形參,但不能進行重新賦值。

public void show(final int num){
//num = 20;//編譯不通過
System.out.println(num);
}
//不可以在方法內賦值,只有在呼叫時賦值,如test.show(10);

static final 用來修飾屬性:全域性常量

面試題:排錯

public class Something{
public int addOne(final int x){
return ++x;// 錯誤的,因為改變了x;
//return x + 1;//正確的。未改變x;
}
}