Difference between final static and static final

final, java, static

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`

Problem

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`?

Original source