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对正确答案的回应。