有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的最终变量

 class Test {
     public static final int x;
     public static void main (String[] args) {
         Test.x = 42;
     }
 }

我已经声明了一个静态final变量,当我编译它时,出现了以下错误

 error: cannot assign a value to final variable x
 Test.x = 42;    

我想我已经找到了解决办法,但我想检查一下我是否正确

我知道静态变量如果没有初始化,会提供一个默认值。因为它是一个静态的最终int变量,所以它将被赋值为0。稍后,我尝试将值更改为42,这是不可能的,因为变量是final,不能从0更改

我是对的还是有其他答案


共 (4) 个答案

  1. # 1 楼答案

    class Test 
    {
       public static final int x = 42;
       //...
    }
    

    我会的

  2. # 2 楼答案

    final成员只能在其初始化或构造函数中直接分配给。因为main()不是这两种东西,所以它不能给final成员赋值。当代码执行时,它已经是“最终的”

    由于这个final成员是static,除非在声明中赋值,否则必须在静态初始值设定项中赋值。例如:

    class Test {
        public static final int x;
    
        static {
            x = 42;
        }
    }
    
  3. # 3 楼答案

    最终变量在java中只能初始化一次

    非静态最终变量可以在构造函数中初始化一次

    静态最终变量可以在静态块中初始化一次

    除了在声明时初始化它们之外

  4. # 4 楼答案

    你几乎是对的。唯一的注释是,所有实例变量都用默认值初始化,无论是静态的还是非静态的。当您将它标记为final时,编译器确保它只初始化一次