java變數及常量

吾愛你所愛發表於2021-06-29

變數

本質:就是代表一個”可操作的儲存空間”,空間位置是確定的,但是裡面放置什麼值不確定。我們可通過變數名來訪問“對應的儲存空間”,從而操縱這個“儲存空間”儲存的值。

Java變數是程式中最基本的儲存單元。其要素包括變數名、變數型別和作用域。

變數分類:
java變數及常量
區域性變數在使用前必須先宣告、初始化(賦初值)再使用。
java變數及常量java變數及常量
類變數:使用static定義。從屬於類,生命週期伴隨類始終,從類載入到解除安裝。如果不自行初始化,與成員變數相同會自動初始化成該型別的預設初始值。
 int  String  = 1;   // 這是對的   引用型別可以當變數名

常量:

  • 在Java語言中,主要是利用關鍵字final來定義一個常量。常量一旦被初始化後不能再更改其值。

  •  只能被初始化一次

  •  書寫:常量一般大寫字母和下劃線:MAX_VALUE

 

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不保證此方法總被呼叫。

相關文章