static public和public static,为什么同样的事情可以用两种不同的风格来完成?

时间:2014-01-08 17:47:09

标签: java

static public final int i = 0;
public static final int i = 0;

两者都很好。
为什么同样的事情可以用两种不同的风格来完成?

3 个答案:

答案 0 :(得分:4)

因为没有理由阻止它。

两个运算符都没有任何优先级或效果,您可以按任意顺序将所有关键字放在变量之前(例如volatile也是如此)。这就是定义语言的方式。

一般风格往往首先是访问级别,然后是静态(如果存在),然后是其他任何东西。这甚至不是一个官方指南(我知道),就像大多数人所做的那样。

答案 1 :(得分:3)

Java Language Specification, Section 8.3.1,允许它:

  

FieldModifiers:

FieldModifier
FieldModifiers FieldModifier
     

FieldModifier:

之一
Annotation public protected private
static final transient volatile

此限制:

  

如果相同的修饰符在字段声明中出现多次,或者字段声明具有多个访问修饰符public,protected和private,则为编译时错误。

  

如果两个或多个(不同的)字段修饰符出现在字段声明中,则通常(尽管不是必需的)它们的显示顺序与上面在FieldModifier的制作中显示的顺序一致。

因此,public staticstatic public是允许的。

答案 2 :(得分:1)

从语言规范的第8.3.1节(字段修饰符):

“如果字段中出现两个或更多(不同的)字段修饰符 声明,虽然不要求,但它们是习惯性的 出现的顺序与上面显示的顺序一致 FieldModifier的制作。“ http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#78091

所以答案是:这是一种语言规范