Java中常量和final變數的區別?


Java中的常量

常量變數的值是固定的,程式中只有一個副本。一旦宣告常量變數併為其賦值,就不能在整個程式中再次更改其值。

與C語言不同,Java中並不直接支援常量。但是,可以透過宣告變數為static和final來建立常量。

  • 一旦將變數宣告為static,它們將在編譯時載入到記憶體中,即只有一個副本可用。

  • 一旦將變數宣告為final,就不能再次修改其值。

示例

 線上演示

class Data {
   static final int integerConstant = 20;
}
public class ConstantsExample {
   public static void main(String args[]) {
      System.out.println("value of integerConstant: "+Data.integerConstant);
   }
}

輸出

value of integerConstant: 20

Java中的final變數

一旦將變數宣告為final,就不能更改其值。如果嘗試這樣做,將生成編譯時錯誤。

示例

 線上演示

public class FinalExample {
   public static void main(String args[]) {
      final int num = 200;
      num = 2544;
   }
}

輸出

FinalExample.java:4: error: cannot assign a value to final variable num
   num = 2544;
   ^
1 error

final變數和常量(static和final)之間的主要區別在於:如果建立不帶static關鍵字的final變數,儘管其值不可修改,但每次建立新物件時都會建立一個單獨的變數副本。而常量是不可修改的,並且在整個程式中只有一個副本。例如,考慮以下Java程式,

示例

 線上演示

class Data {
   final int integerConstant = 20;
}
public class ConstantExample {
   public static void main(String args[]) {
      Data obj1 = new Data();
      System.out.println("value of integerConstant: "+obj1.integerConstant);
      Data obj2 = new Data();
      System.out.println("value of integerConstant: "+obj2.integerConstant);
   }
}

輸出

value of integerConstant: 20
value of integerConstant: 20

在這裡,我們建立了一個final變數,並嘗試使用兩個物件列印其值,儘管變數的值在兩個例項中相同,但由於我們為每個例項使用了不同的物件,因此它們是實際變數的副本。

根據常量的定義,需要在整個程式(類)中只有一個變數副本。

因此,要根據定義建立常量,需要將其宣告為static和final。

更新於: 2019年10月15日

11K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告