When To Use StringBuffer And StringBuilder In Java

When To Use StringBuffer And StringBuilder In Java? Here we will discuss the difference between StringBuffer And StringBuilder class. As we all know both are string manipulation classes but what might be the difference between and when to use which one of them? This blog will answer all those questions. First, we will see the background of these two classes.

First of all, let us know what is mutable and what is immutable.

  • The immutable means an object whose data cannot be modified but the results can be stored in a new object.
  • The mutable means the object whose data can be modified and the result can be stored in the same object.

StringBuffer Class

As we all know strings are immutable, that is for each and every change made to the string a new object will be created which leads to a lot of memory consumption, and also performance might be reduced. To overcome this, StringBuffer has been created which makes the string mutable.

This means the changes that we do to the string data of the StringBuffer class will be stored in the same StringBuffer object without creating a new object. This in turn saves a lot of data and enhances the performance. Both String and StringBuffer classes were given in Java 1.0 version onwards.


public class Main {
   public static void main(String[] args) {
      StringBuffer str = new StringBuffer("Java");
      StringBuffer str1 = str.append("Program");


Java Program

StringBuilder Class

When we have a StringBuffer class why do we use a StringBuilder class? This is because the StringBuffer class is termed as a synchronized or thread-safe object. All methods of the StringBuffer class are synchronized. Hence StringBuffer gives less performance in a single thread model, and also locking and unlocking objects is not necessary.

To overcome this problem StringBuilder class was introduced in Java 1.5 version. The StringBuilder class contains exact similar constructors and methods as the StringBuffer class but all of those methods are non-synchronized. Hence the StringBuilder class is used as a non-thread-safe mutable string.

When Should we use StringBuffer and StringBuilder?

  • The StringBuffer object can be used to store and modify the data in a multi-thread environment.
  • The StringBuilder must be used when storing and modifying the string data in a single thread model application.

Note that both the StringBuffer and StringBuilder class contains the same constructors and methods. Both of them work in a very similar way. The main difference between them is StringBuffer class methods are synchronized therefore it gives better performance in multithread applications whereas the StringBuilder class methods are non-synchronized and therefore give better performance in a single thread application.

If you enjoyed this post, share it with your friends. Do you want to share more information about the topic discussed above or do you find anything incorrect? Let us know in the comments. Thank you!

Leave a Comment

Your email address will not be published. Required fields are marked *