Difference between final static and static final

MBMJ picture MBMJ · Jun 27, 2012 · Viewed 82.9k times · Source

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?

Answer

Gergely Szilagyi picture Gergely Szilagyi · Jun 27, 2012

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