變數
本質:就是代表一個”可操作的儲存空間”,空間位置是確定的,但是裡面放置什麼值不確定。我們可通過變數名來訪問“對應的儲存空間”,從而操縱這個“儲存空間”儲存的值。
Java變數是程式中最基本的儲存單元。其要素包括變數名、變數型別和作用域。
區域性變數在使用前必須先宣告、初始化(賦初值)再使用。
類變數:使用static定義。從屬於類,生命週期伴隨類始終,從類載入到解除安裝。如果不自行初始化,與成員變數相同會自動初始化成該型別的預設初始值。
int String = 1; // 這是對的 引用型別可以當變數名
|
常量:
final關鍵字的作用:
1. 修飾變數: 被他修飾的變數不可改變。一旦賦了初值,就不能被重新賦值。
2. 修飾方法:該方法不可被子類重寫。但是可以被過載!
3. 修飾類: 修飾的類不能被繼承。比如:Math、String等。
成員變數不一定要賦初始值。可以再外面宣告,在構造方法中賦值,也不會錯。
使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
使用final關鍵字修飾一個變數時,是指引用變數不能變(作用在變數上),引用變數所指向的物件中的內容還是可以改變的。
例如,對於如下語句:
finalStringBuffer a=newStringBuffer("immutable");
執行如下語句將報告編譯期錯誤:
a=new StringBuffer("");
但是,執行如下語句則可以通過編譯:
a.append("broken!"); |
final, finally, finalize的區別?
-
final用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。內部類(這裡的內部類指的是方法內部類或匿名內部類,不包含靜態內部類和成員內部類 在Java8 中,被區域性內部類引用的區域性變數,預設新增final,所以不需要新增final關鍵詞)要訪問區域性變數,區域性變數必須定義成final型別。
-
finally是異常處理語句結構的一部分,表示總是執行。
-
finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。但是JVM不保證此方法總被呼叫。
|