2014-01-08 66 views
1
static public final int i = 0; 
public static final int i = 0; 

兩者都正常工作。
爲什麼同樣的事情可以用兩種不同的風格來完成?static public static static,爲什麼可以用兩種不同的樣式來完成同樣的事情?

+0

您可以按任意順序例如混合的關鍵字...不只是公共靜態,也(方法)'最後同步strictfp private void main()'。 **無論你決定做什麼,保持一致!** – tilpner

+2

因爲如果沒有,你會問爲什麼不。 – Maroun

+1

引用[JLS](http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1):_「如果兩個或更多(不同的)類修飾符出現在類聲明中,則習慣上(儘管不是必需)它們按照與ClassModifier「_ –

回答

4

因爲沒有理由阻止它。

這兩個操作符都不會對另一個有任何優先或影響,您可以以任何順序將所有關鍵字放在變量之前(例如volatile)。這就是語言的定義方式。

一般風格傾向於首先具有訪問級別,然後是靜態(如果存在),然後是其他任何東西。儘管(我知道),這甚至不是官方的指導方針,大多數人都這樣做。

3

Java Language Specification, Section 8.3.1,使得它:

FieldModifiers:

FieldModifier
FieldModifier 
FieldModifiers FieldModifier 

之一
Annotation public protected private 
static final transient volatile 

此限制:

如果相同修飾符在字段聲明中多次出現,或者字段聲明具有多個訪問修飾符public,protected和private,那麼這是一個編譯時錯誤。

如果兩個或多個(不同)字段改性劑出現在字段聲明,習慣上,雖然不是必需的,它們出現的順序與在生產上面所示一致爲FieldModifier。

因此,允許使用public staticstatic public

+1

+1」中生成的上述順序顯示的順序顯示,以引用JLS。 – Maroun

+1

是的,我+ 1d這兩個答案都是這個原因:) –

相關問題