我们究竟应该在什么时候使用“公共静态最终字符串”?
我见过很多代码,人们编写代码,然后只使用一个值。public static final String mystring = ...
他们为什么必须这样做?为什么他们必须在使用值之前对其进行初始化?final
更新
好的,谢谢大家的所有答案,我理解这些密钥的含义(公共静态最终)。我不明白的是,为什么人们使用它,即使常量只在一个地方使用,并且只在同一类中使用。我们为什么不直接使用变量呢?
我见过很多代码,人们编写代码,然后只使用一个值。public static final String mystring = ...
他们为什么必须这样做?为什么他们必须在使用值之前对其进行初始化?final
更新
好的,谢谢大家的所有答案,我理解这些密钥的含义(公共静态最终)。我不明白的是,为什么人们使用它,即使常量只在一个地方使用,并且只在同一类中使用。我们为什么不直接使用变量呢?
final
指示变量的值不会更改 - 换句话说,表示其值在声明后无法修改的常量。
当您想要创建一个:public final static String
String
static
final
String
例:
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 )将使引用不可变,但不会使对象的状态不可变:例如,可以更改对象的数据成员,可以更改数组元素,并且可以操作和更改集合。final
String
final
HashMap
最后。。它是一个关键字,用于使字符串恒定。您无法更改该字符串的值。请看下面的例子:
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
}
}
谢谢