可以在 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 次浏览

职业生涯开启您的职业生涯

完成课程获得认证

立即开始
广告