Consider the following example.
String str = new String(); str = \"Hello\"; System.out.println(str); //Prints Hello str = \"Help!\"; System.out.println(s
The String will not change, the reference to it will. You are confusing immutability with the concept of final fields. If a field is declared as final, once it has been assigned, it cannot be reassigned.
final