wood burning stoves
The moose likes Java in General and the fly likes why String is final ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "why String is final ?" Watch "why String is final ?" New topic

why String is final ?

yashendra chandrakar

Joined: Mar 22, 2002
Posts: 22
What's the reason behind making String immutable.
Thomas Paul
mister krabs
Ranch Hand

Joined: May 05, 2000
Posts: 13974
Performance. Immutable strings can be placed in a string pool. Final classes and methods don't participate in polymorphism and can be inlined at compile time.

Associate Instructor - Hofstra University
Amazon Top 750 reviewer - Blog - Unresolved References - Book Review Blog
Sonny Gill
Ranch Hand

Joined: Feb 02, 2002
Posts: 1211

I read somewhere that it also has to do something with security. So, someone cant write a String subclass and get at some secret information stored in Strings, something like that...

The future is here. It's just not evenly distributed yet. - William Gibson
Sonny Gill LinkedIn
John Dale
Ranch Hand

Joined: Feb 22, 2001
Posts: 399

It would be good if nobody could make such a SpyString and pass it into code that might be expected to compare the it to some confidential information, like a password or PIN.
Sayed Ibrahim Hashimi
Ranch Hand

Joined: May 17, 2001
Posts: 148
The String class being final is different then the fact that strings are immutable.
Being final means that the String class cannot be subclassed. And the fact the strings are immutable means that once a String has been created it can't be changed. You can only what the reference points to.

SCJP 1.4<br /><a href="http://www.cise.ufl.edu/~sih" target="_blank" rel="nofollow">www.cise.ufl.edu/~sih</a>
John Dale
Ranch Hand

Joined: Feb 22, 2001
Posts: 399
Right. I was trying to speak to the earlier point of subclassing. Since I don't think the question has been answered yet...
One reason for making string immutable:
Suppose a string is passed to an object which needs to save the the information in that string for future use. If the string were not immutable, it would need to make a copy of the information in string, at extra cost in memory and time, or save a reference to the string and run the risk that somebody else will change the value of the string in the future, which is generally unacceptable. Thus we need an immutable String class.
I agree. Here's the link: http://aspose.com/file-tools
subject: why String is final ?
It's not a secret anymore!