The StringBuilder class in Java is used to efficiently handle mutable strings. Unlike String, which is immutable, StringBuilder allows modifications to strings without creating new objects every time a change is made, offering better performance when strings are repeatedly modified.

Key Features of StringBuilder

  1. Mutable:
    • The contents of a StringBuilder can be modified after its creation. This is in contrast to String, which is immutable.
    StringBuilder sb = new StringBuilder("Hello");
    sb.append(" World");  // Modifies the content of sb
    System.out.println(sb);  // Output: Hello World
    
  2. Efficient for String Concatenation:
    • Using StringBuilder is more efficient for string concatenation inside loops or iterative operations because it avoids creating multiple String objects.
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 1000; i++) {
        sb.append(i);  // Avoids creating new String objects
    }
    
  3. Thread-Unsafe:
    • StringBuilder is not thread-safe, meaning that it should be used when thread safety is not a concern. If thread safety is needed, consider using StringBuffer.
  4. Performance:
    • StringBuilder provides better performance in scenarios that involve frequent modification of strings, such as concatenation, deletion, or replacement, compared to using immutable String objects.

Common Methods in StringBuilder

  • append(): Adds a string or other data type to the end.
  • insert(): Inserts a string at a specified position.
  • delete(): Removes a substring from a specified range.
  • reverse(): Reverses the sequence of characters.
  • toString(): Converts the StringBuilder to a String.

Example Usage

StringBuilder sb = new StringBuilder("Java");
sb.append(" Programming");  // Concatenate
sb.insert(4, "Script ");    // Insert at index 4
System.out.println(sb.toString());  // Output: JavaScript Programming

When to Use StringBuilder

  • String Modifications: When you need to modify the contents of a string multiple times, such as in loops or when concatenating many strings.
  • Performance: To improve performance compared to using String for concatenation in scenarios involving frequent updates to the string.

In summary, StringBuilder provides a mutable and efficient way to work with strings, especially when modifying or concatenating them multiple times. It avoids the overhead of creating new String objects, improving performance in such scenarios.