可以在 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 變數,那麼它將在你例項化其類後立即被初始化。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP