static public final int i = 0;
public static final int i = 0;
两者都很好。
为什么同样的事情可以用两种不同的风格来完成?
答案 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 static
和static public
是允许的。
答案 2 :(得分:1)
从语言规范的第8.3.1节(字段修饰符):
“如果字段中出现两个或更多(不同的)字段修饰符 声明,虽然不要求,但它们是习惯性的 出现的顺序与上面显示的顺序一致 FieldModifier的制作。“ http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#78091
所以答案是:这是一种语言规范