If I remember correctly, Java will do things in memory that you might not be aware of. String is an example of this, it will allocate additional memory because it creates a new string object when doing += in Java Answer from mrhamster on reddit.com
🌐
Oracle
docs.oracle.com › javase › 8 › docs › api › java › lang › StringBuilder.html
StringBuilder (Java Platform SE 8 )
April 21, 2026 - First the characters in the substring are removed and then the specified String is inserted at start. (This sequence will be lengthened to accommodate the specified String if necessary.) ... This object. ... StringIndexOutOfBoundsException - if start is negative, greater than length(), or greater than end. public StringBuilder insert(int index, char[] str, int offset, int len)
🌐
GeeksforGeeks
geeksforgeeks.org › java › stringbuilder-class-in-java-with-examples
StringBuilder Class in Java - GeeksforGeeks
In Java, the StringBuilder class (part of the java.lang package) provides a mutable sequence of characters.
Published   May 8, 2026
People also ask

What are the different constructors of StringBuilder?
There are four constructors for the Java StringBuilder class. StringBuilder(): This constructor creates an empty string builder object with no characters inside it with an initial capacity of 16. StringBuilder(CharSequence seq): This type of constructor creates a string builder object with the specified sequence of characters as the initial value. StringBuilder(int capacity): This specific constructor creates an empty string builder object with the specified capacity as the initial capacity. StringBuilder(String str): This string constructor creates a string builder object with the specified s
🌐
simplilearn.com
simplilearn.com › home › resources › software development › stringbuilder in java: constructors, methods, and examples
Stringbuilder in Java: Constructors, Methods, and Examples [Updated]
What is the string builder in Java?
StringBuilder is a class in the Java API that provides a mutable sequence of characters. It is used for dynamic string manipulation, such as building strings from many smaller strings or appending new characters to an existing string. Additionally, it is more efficient than using the "+" operator for string concatenation, as this creates a unique string every time.  And added to this, Java String builder is a powerful tool for constructing strings. The builder can build strings of any length, from a single character to many characters. The builder is also thread-safe to be used in multi-thread
🌐
simplilearn.com
simplilearn.com › home › resources › software development › stringbuilder in java: constructors, methods, and examples
Stringbuilder in Java: Constructors, Methods, and Examples [Updated]
What are some of the benefits of StringBuilder?
Improved Performance: StringBuilder is faster than String buffer because it does not have any synchronization. Increased Flexibility: StringBuilder allows for more flexibility in manipulating strings. Easy to use: StringBuilder is simple and does not require any synchronization. Reduced Memory Usage: StringBuilder uses less memory than StringBuffer because it does not need to store previous values. Efficient Coding: StringBuilder is more efficient in coding because it requires fewer lines of code than StringBuffer.
🌐
simplilearn.com
simplilearn.com › home › resources › software development › stringbuilder in java: constructors, methods, and examples
Stringbuilder in Java: Constructors, Methods, and Examples [Updated]
🌐
Reddit
reddit.com › r/learnprogramming › [java] what exactly is stringbuilder and why use it instead of a traditional string?
r/learnprogramming on Reddit: [Java] What exactly is stringBuilder and why use it instead of a traditional String?
January 6, 2021 -

Going through firecode.io and saw this solution (to replace spaces with a certain string)

public static String replace(String a, String b) {

    String ans = "";
    for (char c: a.toCharArray() ){
        if (c == ' '){ ans += b; }
        else { ans += c; }
    }
    return ans;

}

A user commented and said:

Use StringBuilder instead - it's more efficient! String does not allow appending. Each method you invoke on a String creates a new object and returns it. This is because String is immutable - it cannot change its internal state. On the other hand StringBuilder is mutable. When you call append(..) it alters the internal char array, rather than creating a new string object.

I'm curious about this and wanted to ask (I'm new to Java):

  • If a traditional 'String' is immutable, why am I able to use it in a "+=" operation to append a char at the end?

  • So when you use the "+=" operation, the computer instantiates a brand new String object each and every time you do it? So effectively I'm creating/destroying multiple String objects over and over again with every "+="?

  • Coming from C++, I see a lot of the "+=" operation when working with strings. Is it the same situation in C++ as it is expressed here in Java?

🌐
Simplilearn
simplilearn.com › home › resources › software development › stringbuilder in java: constructors, methods, and examples
Stringbuilder in Java: Constructors, Methods, and Examples [Updated]
3 weeks ago - StringBuilder in Java is used to create mutable (modifiable) string. Learn all about it, important methods and constructors, and more now. Start learning!
Address   5851 Legacy Circle, 6th Floor, Plano, TX 75024 United States
🌐
Medium
medium.com › @YodgorbekKomilo › mastering-javas-stringbuilder-the-ultimate-guide-for-beginners-8a579eb6d1f6
💡 Mastering Java’s StringBuilder: The Ultimate Guide for Beginners 🚀 | by Yodgorbek Komilov | Medium
May 9, 2025 - StringBuilder sb = new StringBuilder("race"); sb.append("car"); System.out.println(sb); // racecar sb.reverse(); System.out.println(sb); // racecar (palindrome!) Let’s solve a coding problem — print even and odd-indexed characters of a string separately: import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); scanner.nextLine(); // Consume newline for (int i = 0; i < t; i++) { String s = scanner.nextLine(); StringBuilder even = new StringBuilder(); StringBuilder odd = new StringBuilder(); for (int j = 0; j < s.length(); j++) { if (j % 2 == 0) { even.append(s.charAt(j)); } else { odd.append(s.charAt(j)); } } System.out.println(even + " " + odd); } scanner.close(); } }
🌐
Codecademy
codecademy.com › docs › java › stringbuilder
Java | StringBuilder | Codecademy
April 24, 2025 - In Java, the StringBuilder class is a part of the java.lang package that creates a mutable sequence of characters. Unlike String objects, which are immutable, StringBuilder allows modifying character sequences without creating new objects for ...
Find elsewhere
🌐
IONOS
ionos.com › digital guide › websites › web development › java stringbuilder
How to use Java’s StringBuilder - IONOS
January 3, 2025 - Java’s String­Builder has 4 con­struc­tors that help convert the string into the right format for the class. They are also used for con­fig­u­ra­tion. Here are the four con­struc­tors and their purposes: StringBuilder(): Generates an empty String­Builder with a maximum capacity of 16 char­ac­ters
🌐
Scaler
scaler.com › home › topics › java › stringbuilder in java with examples, methods and constructors
StringBuilder in Java with Examples, Methods, and Constructors - Scaler Topics
May 3, 2023 - StringBuilder in Java is an alternative to String class in Java. String class creates immutable string objects which means once a String object is declared, it cannot be modified. However, the StringBuilder class represents a mutable sequence of characters. StringBuilder class is very similar ...
🌐
Tutorialspoint
tutorialspoint.com › java › lang › java_lang_stringbuilder.htm
Java StringBuilder Class
The Java StringBuilder class is mutable sequence of characters. This provides an API compatible with StringBuffer, but with no guarantee of synchronization. StringBuilder class can be used to replace StringBuffer where single threaded operations ...
🌐
BeginnersBook
beginnersbook.com › 2022 › 10 › java-stringbuilder-class
Java StringBuilder Class With Examples
It only requires new memory when the concatenated string is larger than the already allocated buffer to the StringBuilder instance. Let’s see an example of StringBuilder class constructors: public class JavaExample { public static void main(String args[]) { //creating StringBuilder using default constructor StringBuilder sb = new StringBuilder(); //appending a string to newly created instance sb.append("BeginnersBook.com"); System.out.println("First String: "+sb); //Using StringBuilder(String str) constructor String str = "hello"; StringBuilder sb2 = new StringBuilder(str); System.out.printl
🌐
Great Learning
mygreatlearning.com › blog › it/software development › stringbuilder in java: efficient string manipulation for enhanced performance
StringBuilder in Java: Efficient String Manipulation for Enhanced Performance
September 3, 2024 - StringBuilder is part of the Java.lang package and offers a mutable sequence of characters. It allows for dynamic modification of strings without creating new instances, resulting in enhanced performance and reduced memory overhead.
Top answer
1 of 2
9

You're on the right track by understanding the immutability of the String class.

Based on [1] and [2], here are some cases where each type of implementation is recommended:

1. Simple String Concatenation

String answer = firstPart + "." + secondPart;

This is syntactic sugar for

String answer = new StringBuilder(firstPart).append("."). append(secondPart).toString();

This is actually quite performant and is the recommended approach for simple string concatenation [1].

2. Stepwise Construction

String answer = firstPart;
answer += ".";
answer += secondPart;

Under the hood, this translates to

String answer = new StringBuilder(firstPart).toString(); 
answer = new StringBuilder(answer).append(".").toString(); 
answer = new StringBuilder(answer).append(secondPart).toString();

This creates a temporary StringBuilder and intermediate String objects which are inefficient [1]. Especially if the intermediate results are not used.

Use StringBuilder in this case.

3. For Loop Construction and Scaling For Larger Collections

String result = "";

for(int i = 0; i < numItems(); i++) 
  result += lineItem(i);

return result;

The above code is O(n^2), where n is number of strings. This is due to the immutability of the String class and due to the the fact that when concatenating two strings, the contents of both are copied [2].

So it may be fine for a few fixed length items, but it will not scale. In such cases, use StringBuilder.

StringBuilder sb = new StringBuilder(numItems() * LINE_SIZE);

for(int i = 0; i < numItems(); i++)
  sb.append(lineItem(i));

return b.toString();

This code is O(n) time, where n is number of items or strings. So as the number of strings gets larger, you will see the difference in performance [2].

This code pre-allocates an array in the initialization of StringBuilder, but even if a default size array is used, it will be significantly faster than the previous code for a large number of items [2].

Summary

Use string concatenation if you are concatenating only a few strings or if performance is not of importance (i.e. a demonstration/toy-application). Otherwise, use StringBuilder or consider processing the string as a character array [2].

References:

[1] Java Performance: The Definitive Guide by Scott Oaks: Link

[2] Effective Java 3rd Edition by Joshua Bloch: Link

2 of 2
5

You cannot change the original string because it is immutable therefore having String s = ""; every operation like

s += "something";

will create and reassign new object (probably it will also add a little bit of work for GC in near future). On he other hand modifying StringBuilder is (usually) not creating new object (indeed it is happening just once at the very end when calling toString() method on builder instance)

Because of this it is common to use StringBuilder when you are modifying string many many times (for example in some long loops).

Still it is common error to overuse StringBuilder - it may be example of premature optimization


Read also:

  • Is it better to reuse a StringBuilder in a loop?
🌐
Oracle
docs.oracle.com › javase › tutorial › java › data › buffers.html
The StringBuilder Class (The Java™ Tutorials > Learning the Java Language > Numbers and Strings)
When this happens, the capacity is automatically increased. The principal operations on a StringBuilder that are not available in String are the append() and insert() methods, which are overloaded so as to accept data of any type. Each converts its argument to a string and then appends or inserts the characters of that string to the character sequence in the string builder.
🌐
Oracle
docs.oracle.com › en › java › javase › 20 › docs › api › java.base › java › lang › StringBuilder.html
StringBuilder (Java SE 20 & JDK 20)
July 10, 2023 - Constructs a string builder that contains the same characters as the specified CharSequence. The initial capacity of the string builder is 16 plus the length of the CharSequence argument. ... Compares two StringBuilder instances lexicographically.
🌐
Oracle
docs.oracle.com › en › java › javase › 17 › docs › api › java.base › java › lang › StringBuilder.html
StringBuilder (Java SE 17 & JDK 17)
April 21, 2026 - Constructs a string builder that contains the same characters as the specified CharSequence. The initial capacity of the string builder is 16 plus the length of the CharSequence argument. ... Compares two StringBuilder instances lexicographically.
🌐
Great Learning
mygreatlearning.com › blog › it/software development › java stringbuilder class: methods, examples and more
Java StringBuilder Class: Methods, Examples and more
September 12, 2024 - The StringBuilder class doesn’t provide synchronization, and this is why Java StringBuilder is more suitable to work with than StringBuffer, as it works with a single thread. The StringBuilder class provides high performance compared with other string classes, and it is not thread-safe and provides other methods for various purposes. The heap section of the memory allocates memory in the StringBuilder class, and the StringBuilder class is preferred when we manipulate characters in our string.
🌐
Upgrad
upgrad.com › home › tutorials › software & tech › stringbuilder class in java
StringBuilder Class in Java: A Complete Guide with Examples
August 29, 2025 - The StringBuilder class in Java helps you modify text dynamically without creating unnecessary objects. Unlike the String class, which creates a new object for every modification, StringBuilder makes changes in place.
🌐
Oracle
docs.oracle.com › en › java › javase › 25 › docs › api › › java.base › java › lang › StringBuilder.html
StringBuilder (Java SE 25 & JDK 25)
January 20, 2026 - Constructs a string builder that contains the same characters as the specified CharSequence. The initial capacity of the string builder is 16 plus the length of the CharSequence argument. ... Compares two StringBuilder instances lexicographically.
🌐
The Knowledge Academy
theknowledgeacademy.com › blog › stringbuilder-java
StringBuilder in Java: Constructors, Methods, and Examples
January 1, 2009 - Strings in Java, once declared, are immutable, and changes like appending, deleting and replacing cannot be made to the object that has been declared. StringBuilder in Java allows you to make changes to strings in real-time.