I'm declaring a field:
private static final String filename = "filename.txt";
First, does the order of private static final
matter? If not, is there a standard accepted sequence or convention?
Second, the filename
in my application is fixed. Is this the best was to store its value?
I use Checkstyle with Eclipse, which results in a warning if the declaration is in a different order to the one you've specified, citing the Java Language Specification (JLS). For example,
private final static String filename = "filename.txt";
results in
'static' modifier out of order with the JLS suggestions.
They have this page which lists the order they expect, though following the links on that page through to the JLS I can't see anything to back up their assertion of a suggested order.
Having said that, the order they suggest seems to correspond to the order in most of the code I've seen, so it seems as good a convention as any to adopt.
It's common in Java to give constants (static final
values) an all-uppercase name, so I would write:
private static final String FILENAME = "filename.txt";
See also Code Conventions for the Java Programming Language. (Those are Sun's code conventions that the majority of Java programmers use).
The most accepted order of these keywords is private static final
. Also you can remember the order of these keywords using PSF pattern that:
P => private / public / protected
S => static / abstract / ...
F => final
see: http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.1
8.3.1 Field Modifiers
FieldModifiers:
FieldModifier
FieldModifiers FieldModifier
FieldModifier: one of
Annotation public protected private
static final transient volatile
...
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.
To complete the nice answer by @Hobo above by a current link
8.1.1. Class Modifiers
A class declaration may include class modifiers.
ClassModifier:
(one of)
Annotation public protected private
abstract static final strictfp
[...]
If two or more (distinct) class modifiers appear in a class
declaration, then it is customary, though not required, that they
appear in the order consistent with that shown above in the production
for ClassModifier.