有 Java 编程相关的问题?

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

java声明无值常量

如果我声明一个像static final double PI;这样的常量,我将得到The blank final field PI may not have been initialized错误。为什么我不能先这样声明它,然后再初始化它

更新:我可能不知道初始常量值,必须在一些逻辑之后对其进行初始化,以便为其提供一个值。这就是我以后需要初始化它的原因


共 (6) 个答案

  1. # 1 楼答案

    Java必须确保最后一个字段只初始化一次,并且永远不会更改。这只能在初始化期间发生

  2. # 2 楼答案

    我想你必须初始化第一个值来解决这个问题

    static final double PI=3.14;

    我能解决你的问题

  3. # 3 楼答案

    您可以稍后在代码中对其进行初始化。您只需在使用它之前初始化它

    它不是一次写入内存,在设置值之前读取不会阻塞

  4. # 4 楼答案

    因为常数一旦分配就不能更改。:)

  5. # 5 楼答案

    因为它不是常数,因为您可以在程序的不同位置更改它的值

  6. # 6 楼答案

    变量被声明为静态意味着,当类被加载到内存中时,所有静态变量也被加载到内存中。除此之外,这个变量是final,意味着它在类加载时必须是某个值。在非静态代码块中初始化它意味着将其值从零(null)更改为新分配的值

    通过这个示例可以看出,即使并没有初始化静态final变量,也可以在类的静态块中进行初始化

    class Demo {
           static final String msgHeader;
           /*
               Some lines of code
           */
           static { 
                    msgHeader="Please Verify the Input";
           }
     }