Java中的静态最终variables

可能重复:
私人最终静态属性vs私人最终属性

声明一个variables的区别是什么?

static final int x = 5; 

要么

 final int x = 5; 

如果我只想variables是本地的,而且是恒定的(以后不能更改)?

谢谢

只有最后才会有预期的效果。

声明静态使其成为一个类variables,这将通过类名<ClassName>.x.

宣布领域为“最终”将确保该领域是一个常数,不能改变。 区别在于使用“静态”关键字。

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

正如你所看到的,你要求这个领域应该是不变的,在这两种情况下(宣布领域为“最终”和“静态最终”)。

类似的问题是私有的最终静态属性vs私有的最终属性

希望能帮助到你

在第一个语句中,你定义了所有对象(类静态字段)通用的variables。

在第二个语句中,您定义了属于每个创build对象(大量副本)的variables。

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

对于原始types,“最终静态”将是一个正确的声明来声明一个常量。 当它是一个对象的常量引用时,非静态的最终variables是有意义的。 在这种情况下,每个实例都可以包含自己的引用,如JLS 4.5.4所示。

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