Difference between final static and static final
Solution 1
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
Solution 2
They are the same. The order of modifiers is not significant. And note that the same rule applies in all contexts where modifiers are used in Java.
However, most Java style guides recommend/mandate the same specific order for the modifiers. In this case, it is public static final
.
Solution 3
private static final String API_RTN_ERROR= "1";
private final static String API_RTN_ERROR= "1";
static private final String API_RTN_ERROR= "1";
static final private String API_RTN_ERROR= "1";
final static private String API_RTN_ERROR= "1";
final private static String API_RTN_ERROR= "1";
even all above are same the position of first three is intercangeable.
Solution 4
They are same,
private final static String API_RTN_ERROR = "1";
private static final String API_RTN_ERROR= "1";
Solution 5
What is the difference between them or are they same?
If you are talking about changing order of static and final then yes they are same.
does it differ for private or public?
No, you can use any order in private and public. Just difference is private variables will not be accessible outside of class directly.
Related videos on Youtube
![MBMJ](https://i.stack.imgur.com/hUb6k.png?s=256&g=1)
Comments
-
MBMJ almost 3 years
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
orpublic
?-
Alex Lockwood about 12 yearsIf they are different, then I give up on java completely.
-
-
sfarbota over 10 yearsFor reference, the order from the link is
abstract static final
. -
runzhi xiao over 2 yearsThere are indeed all interchangeable but will make other code-reader really angry. Better stick to one order