static public final int i = 0;
public static final int i = 0;
兩者都正常工作。
爲什麼同樣的事情可以用兩種不同的風格來完成?static public static static,爲什麼可以用兩種不同的樣式來完成同樣的事情?
static public final int i = 0;
public static final int i = 0;
兩者都正常工作。
爲什麼同樣的事情可以用兩種不同的風格來完成?static public static static,爲什麼可以用兩種不同的樣式來完成同樣的事情?
因爲沒有理由阻止它。
這兩個操作符都不會對另一個有任何優先或影響,您可以以任何順序將所有關鍵字放在變量之前(例如volatile)。這就是語言的定義方式。
一般風格傾向於首先具有訪問級別,然後是靜態(如果存在),然後是其他任何東西。儘管(我知道),這甚至不是官方的指導方針,大多數人都這樣做。
的Java Language Specification, Section 8.3.1,使得它:
FieldModifiers:
FieldModifierFieldModifier FieldModifiers FieldModifier
:
之一Annotation public protected private static final transient volatile
此限制:
如果相同修飾符在字段聲明中多次出現,或者字段聲明具有多個訪問修飾符public,protected和private,那麼這是一個編譯時錯誤。
和
如果兩個或多個(不同)字段改性劑出現在字段聲明,習慣上,雖然不是必需的,它們出現的順序與在生產上面所示一致爲FieldModifier。
因此,允許使用public static
和static public
。
+1」中生成的上述順序顯示的順序顯示,以引用JLS。 – Maroun
是的,我+ 1d這兩個答案都是這個原因:) –
從語言規範的8.3.1節(現場改性劑):
「如果兩個或多個(不同)字段改性劑出現在字段 聲明,習慣上,雖然不需要,即他們 顯示的順序與上面在FieldModifier的生產 中顯示的順序一致。「 http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#78091
因此,答案是:這是一個語言規範
您可以按任意順序例如混合的關鍵字...不只是公共靜態,也(方法)'最後同步strictfp private void main()'。 **無論你決定做什麼,保持一致!** – tilpner
因爲如果沒有,你會問爲什麼不。 – Maroun
引用[JLS](http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1):_「如果兩個或更多(不同的)類修飾符出現在類聲明中,則習慣上(儘管不是必需)它們按照與ClassModifier「_ –