final in java method arguments-Collection of common programming errors
It doesn’t make a difference at runtime. This is provable in the most conclusive way: adding the final modifier doesn’t even change the compiled bytecode!
FinalParam.java (before)
class FinalParam {
public static void main(String[] args) {
System.out.println(java.util.Arrays.toString(args));
}
}
$ javac -version
javac 1.7.0_15
$ javac FinalParam.java
$ md5sum FinalParam.class
7ca43ea68179f6191d5bf1de7ba21945
$ rm FinalParam.class
FinalParam.java (after)
class FinalParam {
public static void main(final String[] args) {
System.out.println(java.util.Arrays.toString(args));
}
}
$ javac FinalParam.java
$ md5sum FinalParam.class
7ca43ea68179f6191d5bf1de7ba21945