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。
廣告