String vs StringBuilder in Java

Modified on Mon, 9 Sep at 12:08 PM

Java provides two main classes for handling strings: String and StringBuilder. While both deal with sequences of characters, they have fundamental differences in terms of mutability, performance, and use cases.


String

The String class in Java represents an immutable sequence of characters. Once a String object is created, its content cannot be changed.


Once created, a String object cannot be modified. Any operation that appears to modify a String actually creates a new String object.


Example of String Usage:

String str1 = "Hello";
String str2 = str1 + " World"; // Creates a new String object
System.out.println(str2); // Output: Hello World

StringBuilder

StringBuilder represents a mutable sequence of characters. It's designed for scenarios where you need to modify string content frequently.


StringBuilder objects can be modified without creating new instances, making them more memory-efficient for string manipulations.


Example of StringBuilder Usage:

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // Modifies the existing StringBuilder object
System.out.println(sb.toString()); // Output: Hello World

When to Use String vs StringBuilder

Use String when:

  • You need an immutable string

  • The string value won't change frequently

  • Working with small amounts of text


Use StringBuilder when:

  • You need to modify the string content frequently

  • Performing many concatenation operations, especially in loops

  • Working with large amounts of text


Best Practices

  1. String Concatenation: For simple concatenations, use the + operator. For more complex scenarios or within loops, use StringBuilder.

  2. Initial Capacity: When you know the approximate final length of your string, initialize StringBuilder with that capacity to avoid resizing operations: 

StringBuilder sb = new StringBuilder(1000);

  1. Method Chaining: Take advantage of StringBuilder's method chaining for cleaner code:

 StringBuilder sb = new StringBuilder()
       .append("Hello")
       .append(" ")
       .append("World");


  1. Convert to String: Remember to call toString() on StringBuilder when you need a String object.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article