【发布时间】:2013-03-02 18:58:36
【问题描述】:
final static int x = 1; 和 static final int x=1 有什么区别吗?换句话说,java 编译器在这两种情况下会以完全相同的方式表示x 吗?
编辑:编译器对于静态和最终是否有任何优先级或优先级?
【问题讨论】:
-
在第一个
final之前static;)
final static int x = 1; 和 static final int x=1 有什么区别吗?换句话说,java 编译器在这两种情况下会以完全相同的方式表示x 吗?
编辑:编译器对于静态和最终是否有任何优先级或优先级?
【问题讨论】:
final 之前 static ;)
编译器以相同的方式表示它们没有区别。
这只是个人喜好,我个人使用static final,这是我通常看到的其他开发人员使用的。
【讨论】:
static final 是要走的路。
java 编译器在两种情况下都以完全相同的方式表示 x
【讨论】:
没有区别。我更喜欢使用final static int
【讨论】:
没有语义差异。来自 JLS (§8.3.1 Field Modifiers):
FieldModifier: one of Annotation public protected private static final transient volatile如果两个或多个(不同的)字段修饰符出现在一个字段声明中,尽管不是必需的,但习惯上它们的出现顺序与上面 FieldModifier 产生式中显示的顺序一致。
因此首选形式是
static final int x=1;
【讨论】:
来自 Java 语言规范§8.3.1:
FieldModifier: one of
Annotation public protected private
static final transient volatile
如果两个或多个(不同的)字段修饰符出现在一个字段中 声明,习惯上,虽然不是必需的,它们出现在 与上述生产中所示的顺序一致 字段修饰符。
因此,在您的情况下,两者之间没有区别。只有static final 更习惯。
【讨论】: