公共静态和静态公共有什么区别?

时间:2015-01-11 10:06:20

标签: java

public staticstatic public之间有什么区别?

例如:

static public class MyClass....

public static class MyClass....

5 个答案:

答案 0 :(得分:5)

虽然在功能方面没有区别(字节代码完全相同),但想遵循惯例,请访问JLS - 8.3.1. Field Modifiers:< / p>

FieldModifiers:
    FieldModifier
    FieldModifiers FieldModifier

FieldModifier: one of
    Annotation public protected private
    static final transient volatile

看到static public ..

会很奇怪

我还建议您访问checkstyle


编辑:

从同一页面链接到class部分:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1.1

答案 1 :(得分:4)

JLS 8.1.1

  

类声明可能包含类修饰符。

     

ClassModifiers:       ClassModifier       ClassModifiers ClassModifier

     

ClassModifier:其中之一       注释公共保护私人
      abstract static final strictfp

     

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

所以,public static是首选,但顺序并不重要。

答案 2 :(得分:2)

在功能方面绝对没有。

语言标准(JLS Java 8 SE版本)允许使它们按任何顺序排列,但包含此部分8.1.1 Class modifiers

  

ClassModifier: Annotation, public,protected,private,abstract,static,final,strictfp。

     

如果两个或更多(不同的)类修饰符出现在类声明中,那么它是习惯的,   虽然不是必需的,但它们的出现顺序与上面显示的顺序一致   ClassModifier的制作。

因此public static首选选项。

答案 3 :(得分:2)

没有区别,但我敢说事实上的标准是public static。更重要的是,在整个代码中保持一致。

答案 4 :(得分:0)

如果你看一下Java语言规范,section 8.1 Class Declarations,你会发现它没有区别:

ClassDeclaration:
  NormalClassDeclaration
  EnumDeclaration

NormalClassDeclaration:
  {ClassModifier} class Identifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody

ClassModifier:
  Annotation public protected private
  abstract static final strictfp 

{ClassModifier}表示允许其中一个ClassModifier值出现零次或多次(请参阅2.4 Grammar Notation)。

Section 8.1.1也明确说:

  

如果同一关键字多次出现作为类声明的修饰符,则为编译时错误。

     

如果两个或多个(不同的)类修饰符出现在类声明中,那么通常(尽管不是必需的)它们在{的生产中以与上面显示的顺序一致的方式出现 {1}}。