Does It Make Sense to Define a Final String in Java? [Duplicate]

Does It Make Sense to Define a Final String in Java? [Duplicate]

Possible Duplicate:
String and Final

From 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 the final attribute is somehow redundant?

3

4 Answers

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.

final refers to the variable, not the object, so yes, it make sense.

e.g.

final String s = "s";
s = "a"; // illegal

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

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.

1
David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.