Java StringBuilder Class (original) (raw)

Last Updated : 08 Apr, 2025

In Java, the **StringBuilder class is a part of the java.lang package that provides a mutable sequence of characters. Unlike String (which is immutable), StringBuilder allows in-place modifications, making it memory-efficient and faster for frequent string operations.

**Declaration:

StringBuilder sb = new StringBuilder(“Initial String”);

**Key points of the StringBuilder class:

The key features of the StringBuilder class are listed below:

**Example: Demonstration of a StringBuilder class in Java.

Java `

// Demonstrating the usage of StringBuilder class public class Geeks { public static void main(String[] args) { // Create a new StringBuilder with the // initial content "GeeksforGeeks" StringBuilder sb = new StringBuilder("GeeksforGeeks"); System.out.println("Initial StringBuilder: " + sb);

    // Append a string to the StringBuilder
    sb.append(" is awesome!");
    System.out.println("After append: " + sb);
}

}

`

Output

Initial StringBuilder: GeeksforGeeks After append: GeeksforGeeks is awesome!

**Explanation:

Syntax of Java StringBuilder Class

The syntax of the StringBuilder class is listed below:

public final class StringBuilder extends Object implements Serializable, CharSequence

StringBuilder Class Hierarchy

java.lang.Object

↳ java.lang

↳ Class StringBuilder

Why Use StringBuilder in Java?

Using the StringBuilder class in Java has many benefits, which are listed below:

StringBuilder vs String vs StringBuffer

The table below demonstrates the difference between String, StringBuilder and StringBuffer:

Features String StringBuilder StringBuffer
Mutability String are immutable(creates new objects on modification) StringBuilder are mutable(modifies in place) StringBuffer are mutable (modifies in place)
Thread-Safe It is thread-safe It is not thread-safe It is thread-safe
Performance It is slow because it creates an object each time It is faster (no object creation) it is slower due to synchronization overhead
use Case Fixed, unchanging strings Single-threaded string manipulation Multi-threaded string manipulation

StringBuilder Constructors

The StringBuilder class provides several constructors, which are listed below:

Constructor Description Example
StringBuilder() Creates an empty StringBuilder with a default initial capacity of 16. StringBuilder strbldr = new StringBuilder();
StringBuilder(int capacity) Creates a StringBuilder with the specified initial capacity. StringBuilder strbldr = new StringBuilder(50);
StringBuilder(String str) Creates a StringBuilder initialized with the contents of the given string. StringBuilder strbldr = new StringBuilder(“Geeks”);
StringBuilder(CharSequence cs) Creates a StringBuilder initialized with the contents of the given CharSequence object. CharSequence strbldr = “Geeks”; StringBuilder sb = new StringBuilder(cs);

**Example: Creating a string using the StringBuilder Constructor **StringBuilder(String str).

Java `

// Creating a String using StringBuilder constructor // StringBuilder(String str) public class Geeks { public static void main(String[] args) {

    // Creating a String using StringBuilder constructor
    // StringBuilder(String str)
    StringBuilder sb = new StringBuilder("GeeksforGeeks");
    
    // Converting StringBuilder to String
    String str = sb.toString();
    
    // Printing the String
    System.out.println(str);
}

}

`

Methods of StringBuilder class

The StringBuilder class provides several methods for creating and manipulating strings, which are listed below:

Method Description Example
append(String str) Appends the specified string to the end of the StringBuilder. sb.append(“Geeks”);
insert(int offset, String) Inserts the specified string at the given position in the StringBuilder. sb.insert(5, ” Geeks”);
replace(int start, int end, String) Replaces characters in a substring with the specified string. sb.replace(6, 11, “Geeks”);
delete(int start, int end) Removes characters in the specified range. sb.delete(5, 11);
reverse() Reverses the sequence of characters in the StringBuilder. sb.reverse();
capacity() Returns the current capacity of the StringBuilder. int cap = sb.capacity();
length() Returns the number of characters in the StringBuilder. int len = sb.length();
charAt(int index) Returns the character at the specified index. char ch = sb.charAt(4);
setCharAt(int index, char) Replaces the character at the specified position with a new character. sb.setCharAt(0, ‘G’);
substring(int start, int end) Returns a new String that contains characters from the specified range. String sub = sb.substring(0, 5);
ensureCapacity(int minimum) Ensures the capacity of the StringBuilder is at least equal to the specified minimum. sb.ensureCapacity(50);
deleteCharAt(int index) Removes the character at the specified position. sb.deleteCharAt(3);
indexOf(String str) Returns the index of the first occurrence of the specified string. int idx = sb.indexOf(“Geeks”);
lastIndexOf(String str) Returns the index of the last occurrence of the specified string. int idx = sb.lastIndexOf(“Geeks”);
toString() Converts the StringBuilder object to a String. String result = sb.toString();

**Example: Performing different String manipulation operations using StringBuilder methods such as appending, inserting, replacing, deleting, reversing, and accessing characters.

Java `

// Demonstrating the usage of multiple StringBuilder methods like // append(), insert(), replace(), delete(), reverse(), public class Geeks { public static void main(String[] args) {

    // Create a new StringBuilder with the
    // initial content "GeeksforGeeks"
    StringBuilder sb = new StringBuilder("GeeksforGeeks");
    System.out.println("Initial StringBuilder: " + sb);

    // 1. Append a string to the StringBuilder
    sb.append(" is awesome!");
    System.out.println("After append: " + sb);

    // 2. Insert a substring at a specific position
    sb.insert(13, " Java");
    System.out.println("After insert: " + sb);

    // 3. Replace a substring with another string
    sb.replace(0, 5, "Welcome to");
    System.out.println("After replace: " + sb);

    // 4. Delete a substring from the StringBuilder
    sb.delete(8, 14);
    System.out.println("After delete: " + sb);

    // 5. Reverse the content of the StringBuilder
    sb.reverse();
    System.out.println("After reverse: " + sb);

    // 6. Get the current capacity of the StringBuilder
    int capacity = sb.capacity();
    System.out.println("Current capacity: " + capacity);

    // 7. Get the length of the StringBuilder
    int length = sb.length();
    System.out.println("Current length: " + length);

    // 8. Access a character at a specific index
    char charAt5 = sb.charAt(5);
    System.out.println("Character at index 5: " + charAt5);

    // 9. Set a character at a specific index
    sb.setCharAt(5, 'X');
    System.out.println("After setCharAt: " + sb);

    // 10. Get a substring from the StringBuilder
    String substring = sb.substring(5, 10);
    System.out.println("Substring (5 to 10): " + substring);

    // 11. Find the index of a specific substring
    sb.reverse(); // Reversing back to original order for search
    int indexOfGeeks = sb.indexOf("Geeks");
    System.out.println("Index of 'Geeks': " + indexOfGeeks);

    // 12. Delete a character at a specific index
    sb.deleteCharAt(5);
    System.out.println("After deleteCharAt: " + sb);

    // 13. Convert the StringBuilder to a String
    String result = sb.toString();
    System.out.println("Final String: " + result);
}

}

`

**Output:

OutputStringBuilder

**Explanation: In the above program, we use different methods of the StringBuilder class to perform different string manipulation operations such as **append(), insert(), reverse(), and **delete().

Advantages

The advantages of the StringBuilder class are listed below:

Disadvantages

The disadvantages of the StringBuilder class are listed below: