Meaningless Drivel is fun!*
The moose likes Beginning Java and the fly likes String, StringBuffer and StringBuilder - Performance Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "String, StringBuffer and StringBuilder - Performance" Watch "String, StringBuffer and StringBuilder - Performance" New topic
Author

String, StringBuffer and StringBuilder - Performance

Vijayanarayana Reddy Bhoomireddy
Greenhorn

Joined: Apr 22, 2006
Posts: 6
All,

Can anyone please clarify the difference between String, StringBuffer and StringBuilder classes in terms of performance. Any significant compile time benefits if we use String objects instead of StringBuffer/StringBuilder objects?

Sorry if there is a post on the same topic before.

Many Thanks
Vijay
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38817
    
  23
The three classes are as different as chalk and cheese.
Don't use StringBuffer; it has a significant performance overhead over StringBuilder and the synchronisation can be replaced by locking if required.

Lots more in the Java� Tutorials. If you want text, use String; it is immutable and thread-safe and doesn't require cloning or defensive copying, so you can use the same String object in different places.
If you need to change the contents of the text, use StringBuilder and get the contents out with its toString() method.
Beware: StringBuilder hasn't got an overridden equals() method, so if you want to see whether two StringBuilders have the same contents try

builder1.toString().equals(builder2.toString())
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38817
    
  23
You can do some repeated concatenation of String like thisThen you can see how poor the performance is and how much faster it is with StringBuilder.
Jon Camilleri
Ranch Hand

Joined: Apr 25, 2008
Posts: 660

Vijayanarayana Reddy Bhoomireddy wrote:All,

Can anyone please clarify the difference between String, StringBuffer and StringBuilder classes in terms of performance. Any significant compile time benefits if we use String objects instead of StringBuffer/StringBuilder objects?

Sorry if there is a post on the same topic before.

Many Thanks
Vijay


String is a class that allows the developer to build immutable String objects, whilst StringBuilder allows the developer to create strings from arrays of characters for example. This example illustrates a subtle security bad practice.



For further information this book helpful in explaining concepts, except for StringBuffer, which might have been excluded due to the performance overhead mentioned in this thread.


Jon
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: String, StringBuffer and StringBuilder - Performance