我们究竟应该在什么时候使用“公共静态最终字符串”?

2022-08-31 16:21:24

我见过很多代码,人们编写代码,然后只使用一个值。public static final String mystring = ...

他们为什么必须这样做?为什么他们必须在使用值之前对其进行初始化?final

更新

好的,谢谢大家的所有答案,我理解这些密钥的含义(公共静态最终)。我不明白的是,为什么人们使用它,即使常量只在一个地方使用,并且只在同一类中使用。我们为什么不直接使用变量呢?


答案 1

final指示变量的值不会更改 - 换句话说,表示其值在声明后无法修改的常量

当您想要创建一个:public final static StringString

  1. 属于该类(:不需要实例来使用它),即static
  2. 不会更改 (),例如,当您想要定义一个常量时,该常量将可用于该类的所有实例以及使用该类的其他对象,并且finalString
  3. 将是该类向世界显示的界面的可公开访问部分。

例:

public final static String MY_CONSTANT = "SomeValue";

// ... in some other code, possibly in another object, use the constant:
if (input.equals(MyClass.MY_CONSTANT)

同样地:

public static final int ERROR_CODE = 127;

不需要使用 ,但它可以防止在程序执行期间无意中更改常量,并用作变量是常量的指示器。final

即使常量将只在当前类和/或仅在一个地方使用 - 读取 - 使用,也最好将所有常量声明为:它更清晰,并且在代码的生命周期中,常量可能最终在多个地方使用。final

此外,使用可以允许实现执行一些优化,例如,通过使用常量的地方内联实际值。final

最后请注意,它只会从基元类型中产生真正恒定的值,并且它是不可变的。应用于对象(例如 a )将使引用不可变,但不会使对象的状态不可变:例如,可以更改对象的数据成员,可以更改数组元素,并且可以操作和更改集合。finalStringfinalHashMap


答案 2
  1. 静态意味着..您可以在不实例化类或使用任何对象的情况下使用它。
  2. 最后。。它是一个关键字,用于使字符串恒定。您无法更改该字符串的值。请看下面的例子:

      public class StringTest { 
               static final String str = "Hello"; 
      public static void main(String args[]) { 
               // str = "world"; // gives error 
               System.out.println(str); // called without the help of an object                       
               System.out.println(StringTest.str);// called with class name  
                 } 
             } 
    

谢谢


推荐