Java中的静态最终变量

时间:2011-09-27 02:44:33

标签: java static final

  

可能重复:
  private final static attribute vs private final attribute

将变量声明为

之间的区别是什么
static final int x = 5;

final int x = 5;

如果我只想将变量设为局部变量并且常量(以后不能更改)?

由于

4 个答案:

答案 0 :(得分:33)

刚进行决赛将产生预期的效果。

声明static使其成为一个类变量,可以通过类名<ClassName>.x.

来访问

答案 1 :(得分:32)

将该字段声明为“final”将确保该字段为常量且无法更改。 不同之处在于使用'static'关键字。

将字段声明为静态意味着它与类型相关联,而不与实例相关联。即,对于所有对象,仅存在一个字段的副本,而不是每个对象的单个副本。 因此,可以通过类名访问静态字段。

正如您所看到的,在两种情况下都要求该字段应该是常量的(将该字段声明为“final”和“static final”)。

类似的问题是private final static attribute vs private final attribute

希望有所帮助

答案 2 :(得分:6)

在第一个语句中,您定义变量,该变量对于所有对象(类静态字段)都是通用的。

在第二个语句中,您定义变量,该变量属于每个创建的对象(很多副本)。

在你的情况下,你应该使用第一个。

答案 3 :(得分:3)

对于基本类型,'final static'将是声明常量的适当声明。当非静态最终变量是对象的常量引用时,它是有意义的。在这种情况下,每个实例都可以包含自己的引用,如JLS 4.5.4

所示

请参阅Pavel对正确答案的回答。