Does it make sense to define a final String in Java?
Solution 1
The String
object is immutable but what it is is actually a reference to a String
object which could be changed.
For example:
String someString = "Lala";
You can reassign the value held by this variable (to make it reference a different string):
someString = "asdf";
However, with this:
final String someString = "Lala";
Then the above reassignment would not be possible and would result in a compile-time error.
Solution 2
final
refers to the variable, not the object, so yes, it make sense.
e.g.
final String s = "s";
s = "a"; // illegal
Solution 3
It makes sense. The final
keyword prevents future assignments to the variable. The following would be an error in java:
final String x = "foo";
x = "bar" // error on this assignment
Solution 4
References are final, Objects are not. You can define a mutable object as final and change state of it. What final ensures is that the reference you are using cannot ever point to another object again.
Campa
Updated on July 09, 2022Comments
-
Campa almost 2 years
Possible Duplicate:
String and FinalFrom http://docs.oracle.com/javase/6/docs/api/java/lang/String.html I can read that:
Strings are constant; their values cannot be changed after they are created.
Does this mean that a
final String
does not really make sense in Java, in the sense that thefinal
attribute is somehow redundant? -
ceyun about 4 yearsWhat I understand from this answer; Due to String is immutable, when we change its content, it will point another object. So, if a string is final then reassignment will not work. But in the case of StringBuffer, it is mutable then we can change its content. Is it right?