为 Java 中的 static final 变量分配值\n


在 Java 中,可以在两个地方为非 static final 变量分配值。

  • 声明时。

  • 在构造函数中。

举例

动态演示

public class Tester {
   final int A;
   //Scenario 1: assignment at time of declaration
   final int B = 2;

   public Tester() {
      //Scenario 2: assignment in constructor
      A = 1;
   }

   public void display() {
      System.out.println(A + ", " + B);
   }

   public static void main(String[] args) {        
      Tester tester = new Tester();
      tester.display();
   }
}

输出

1, 2

但如果是 static final,则不能在构造函数中分配变量。编译器将抛出编译错误。static final 变量需要在 static 块或声明时分配。因此,可以在以下两个位置为 static final 变量分配值。

  • 声明时。

  • 在 static 块中。

举例

动态演示

public class Tester {
   final int A;
   //Scenario 1: assignment at time of declaration
   final int B = 2;

   public Tester() {
      //Scenario 2: assignment in constructor
      A = 1;
   }

   public void display() {
      System.out.println(A + ", " + B);
   }

   public static void main(String[] args) {        
      Tester tester = new Tester();
      tester.display();
   }
}

输出

1, 2

static final 变量有这种行为的原因很简单。static final 在各个对象中都是通用的,如果允许在构造函数中分配它,那么在创建对象时,这个变量会随着每个对象而改变,因此它不能一次性分配。

更新于: 2020 年 6 月 18 日

804 次浏览

启动你的 职业

完成课程即可获得认证

开始
广告