Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
Win a copy of Classic Computer Science Problems in Swift this week in the iOS forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

String, StringBuffer and StringBuilder - Performance  RSS feed

 
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Marshal
Posts: 58829
179
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Marshal
Posts: 58829
179
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Ranch Hand
Posts: 664
Chrome Eclipse IDE
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

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.
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!