Search code examples
javastaticfinal

Difference between final static and static final


I found a code where it declared code like

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";

What is the difference between them or are they same? Or does it differ for private or public?


Solution

  • No difference at all. According to 8.3.1 - Classes - Field Modifiers of the Java Language Specification,

    If two or more (distinct) field modifiers appear in a field declaration, it is customary, though not required, that they appear in the order consistent with that shown above in the production for FieldModifier.

    For fields, the said production lists the modifiers in this order:

    @Annotation public protected private static final transient volatile

    And for methods:

    @Annotation public protected private abstract static final synchronized native strictfp