什么时候我们应该使用“公共静态最终string”?

我已经看到了许多代码,人们写public static final String mystring = ...然后只是使用一个值。

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

UPDATE

好,感谢所有的答案,我明白这些关键的意义(公共静态决赛)。 我不明白的是为什么人们使用,即使常数只能在一个地方使用,只能在同一个class级使用。 为什么要宣布呢? 为什么我们不使用variables?

final表示variables的值不会改变 – 换句话说,一个值的variables在声明后不能被修改。

当你想创build一个String时候使用public final static String

  1. 属于类( static :没有必要使用它的实例),和
  2. 不会改变( final ),比如当你想要定义一个String常量时,这个types的所有实例和其他对象都可以使用它。

例:

 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 ,而是在程序执行过程中不断地改变常量,并作为variables的常量。

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

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

  1. 静态的手段..你可以使用它没有实例化的类或使用任何对象。
  2. 最后..这是一个关键字是用来使string不变。 您不能更改该string的值。 看下面的例子:

      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 } } 

谢谢

关键字final意味着该值是不变的(不能改变)。 它类似于C中的const。

你可以把静态视为一个具有范围的全局variables。 它基本上意味着如果你改变它的一个对象,它将被全部改变,就像一个全局variables(受范围限制)。

希望能帮助到你。

final表示该值一旦设置就不能改变。 static允许你设置这个值,并且这个值对于所有使用它的类的实例都是一样的。 此外,您可以访问具有类的实例的public staticstring的值。

static意味着对象只会被创build一次,并没有包含它的实例对象。 当你有一些对于class级的所有对象都是共同的东西,而且永远不会改变的时候,你写的方式是最好的。 甚至可以在不创build对象的情况下使用它。

通常最好使用final,当你期望它是final时候,编译器会强制执行这个规则,而且你肯定知道。 static确保你不浪费内存创build许多相同的东西,如果它将是所有对象相同的值。

通常用于定义常量,在许多地方重复使用,使其单点更改,在单个类中使用或在包之间共享。 做一个variables最后避免意外的变化。

public可以通过其他课程访问。 static使所有的类实例具有统一的值。 final使其不可修改的价值。 所以基本上它是一个“ 常量 ”值,它在所有类实例中都是相同的,并且不能被修改。 关于你的问题,“我不明白的是为什么人们用这个,即使这个常数只能用在一个地方,只用在同一个类中,为什么要声明它,为什么不用这个variables呢? 我会说,因为它是一个公共字段,常量值也可以用在别的类的其他地方使用ClassName.value。 例如:一个名为Math的类可能将PI作为最终的静态长整型值,可以作为Math.PI来访问。

公众可以跨其他课程访问。 您可以使用它,而无需实例化类或使用任何对象。  静态使所有类实例具有统一的值。确保您不浪费内存创build许多相同的东西,如果它将是所有对象相同的值。  最终使其不可修改的价值。 所以基本上它是一个“常量”值,它在所有类实例中都是相同的,并且不能被修改。

为什么人们在类中使用常量而不是variables?

可读性和可维护性,

在你的代码中有一些像40.023这样的数字并不能说明数字代表什么,所以我们把它replace成像“USER_AGE_YEARS”这样的大写字母。 稍后,当我们查看代码时,清楚该数字代表的是什么。

为什么我们不只是使用一个variables? 那么如果我们知道这个数字会发生变化的话,那么如果它的一些数字不会改变的话,比如3.14159,那么我们就会做出最后的决定。

但是如果它不是一个像String的数字呢? 在这种情况下,它主要是为了可维护性,如果您在代码中多次使用String(并且它不会在运行时更改),将它作为类顶部的最终string很方便。 这样,当你想改变它,只有一个地方来改变它,而不是很多。

例如,如果你有一个错误信息在你的代码中被多次打印,那么最后的String ERROR_MESSAGE =“出错了”。 更容易维护,如果你想改变它从“一些坏事”。 到“吉姆已经死了已经太迟了”,你只需要改变那一行,而不是所有的地方你会使用该评论。