我见过很多代码,人们在其中编写 public static final String mystring = ...
然后只使用一个值。
为什么他们必须这样做?为什么他们必须在使用之前将值初始化为 final
?
更新
好的,谢谢大家的回答,我明白这些关键的含义(公共静态最终)。我不明白的是为什么人们使用它,即使常量只会在一个地方并且只在同一个类中使用。为什么要声明呢?为什么我们不直接使用变量呢?
原文由 storm_buster 发布,翻译遵循 CC BY-SA 4.0 许可协议
我见过很多代码,人们在其中编写 public static final String mystring = ...
然后只使用一个值。
为什么他们必须这样做?为什么他们必须在使用之前将值初始化为 final
?
更新
好的,谢谢大家的回答,我明白这些关键的含义(公共静态最终)。我不明白的是为什么人们使用它,即使常量只会在一个地方并且只在同一个类中使用。为什么要声明呢?为什么我们不直接使用变量呢?
原文由 storm_buster 发布,翻译遵循 CC BY-SA 4.0 许可协议
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
}
}
谢谢
原文由 Omar Faroque Anik 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答741 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
final
表示变量的值不会改变 - 换句话说,一个 _常量_,其值在声明后不能修改。使用
public final static String
当你想创建一个String
时:static
:没有必要使用它的实例),即final
),例如当你想定义一个String
常量,该常量将可用于该类的所有实例,以及使用该类的其他对象,并且那例子:
相似地:
不需要 使用
final
,但它可以防止常量在程序执行期间被无意更改,并作为变量是常量的指示器。即使常量只会在当前类中和/或仅在一个地方使用 - 读取 - 将所有常量声明为
final
是一种很好的做法:它更清晰,并且在代码的生命周期中常量最终可能会在多个地方使用。此外,使用
final
可能允许实现执行一些优化,例如通过内联使用常量的实际值。最后请注意
final
只会从原始类型中生成真正的常量值,String
是不可变的,或其他不可变类型。将final
应用于对象(例如HashMap
)将使 引用 不可变,但对象的状态不是:例如可以更改对象的数据成员,数组元素可以更改,并且可以操作和更改集合。