可以在 Java 中建立物件時初始化 final 變數嗎?


一旦你將變數宣告為 final,在初始化後,你不能進一步修改它的值。此外,和例項變數一樣,final 變數不會使用預設值初始化。

因此,在你宣告 final 變數後,必須對其進行初始化。如果沒有將生成編譯時錯誤。

示例

 現場演示

public class FinalExample {
   final int j;
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      System.out.println(obj.j);
   }
}

編譯時錯誤

FinalExample.java:5: error: non-static variable j cannot be referenced from a static context
System.out.println(j);
^
1 error

初始化 final 變數

有 4 種方法可以初始化 final 變數 −

在宣告時。

 現場演示

public class FinalExample {
   final int j = 100;
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      System.out.println(obj.j);
   }
}

輸出

100

使用 final 方法。

 現場演示

import java.util.Scanner;
public class FinalExample {
   final int num = getNum();
   public static final int getNum() {
      System.out.println("Enter the num value");
      return new Scanner(System.in).nextInt();
   }
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      System.out.println(obj.num);
   }
}

輸出

Enter the num value
20
20

使用建構函式

 現場演示

public class FinalExample {
   final int num;
   public FinalExample(int num) {
      this.num = num;
   }
   public static void main(String args[]){
      FinalExample obj = new FinalExample(20);
      System.out.println(obj.num);
   }
}

輸出

20

使用例項初始化塊

 現場演示

public class FinalExample {
   final int num; {
      num = 500;
   }
   public static void main(String args[]){
      FinalExample obj = new FinalExample();
      System.out.println(obj.num);
   }
}

輸出

500

除了 final 方法的情況之外,如果你使用所有其他三種方式初始化 final 變數,那麼它將在你例項化其類後立即被初始化。

更新於: 2019 年 10 月 11 日

905 次瀏覽

職業生涯開啟您的職業生涯

完成課程獲得認證

立即開始
廣告