Java StringBuilder
Java StringBuilder
In the String Concatenation chapter, you learned to join strings with the + operator.
But a String cannot be changed after it is created. When you add text to a string, Java does not change the old string. It creates a new string every time.
A StringBuilder is a string that can be changed. You can add, insert, replace, delete and reverse text, and Java keeps changing the same text. Think of it like a document that you keep editing, instead of writing a new copy for every change.
Example
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb);
Example explained
new StringBuilder("Hello")creates a StringBuilder with the text "Hello".sb.append(" World")adds " World" to the end of the text.System.out.println(sb)prints the text: Hello World
Note: The new keyword creates the StringBuilder. You will learn more about new in the Classes and Objects chapter.
Add Text with append()
The append() method adds text to the end. You can call it as many times as you like, and it also works with numbers.
Empty parentheses, new StringBuilder(), create an empty StringBuilder:
Example
StringBuilder sb = new StringBuilder();
sb.append("Liam");
sb.append(" has ");
sb.append(3);
sb.append(" apples");
System.out.println(sb);
Tip: You can also write several append() calls on one line: sb.append("Liam").append(" has ").append(3);
Insert, Replace and Delete
A StringBuilder can also change text in the middle. These methods use positions, just like charAt(). Remember that Java counts positions from 0:
insert(position, text)inserts text at a positionreplace(start, end, text)replaces the characters fromstarttoenddelete(start, end)removes the characters fromstarttoend
Example
StringBuilder sb = new StringBuilder("I like cats");
sb.insert(7, "black "); // I like black cats
sb.replace(13, 17, "dogs"); // I like black dogs
sb.delete(7, 13); // I like dogs
System.out.println(sb);
Note: The end position is not included. delete(7, 13) removes the characters at positions 7 to 12, which is the text "black ".
Reverse Text
The reverse() method reverses the order of the characters:
Example
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();
System.out.println(sb); // olleH
This is the quickest way to reverse a string in Java. See also How To Reverse a String.
Convert to a String
Use toString() to turn a StringBuilder into a normal String. You need this when you want to use String methods, like toUpperCase(), or store the text in a String variable:
Example
StringBuilder sb = new StringBuilder("hello");
sb.append(" world");
String text = sb.toString();
System.out.println(text.toUpperCase()); // HELLO WORLD
String vs. StringBuilder
Use a String for text that does not change, like a name or a message.
Use a StringBuilder when you change the text many times, for example when you add text inside a loop (you will learn about loops in a later chapter). It is faster, because Java does not have to create a new string for every change.
Complete StringBuilder Reference
For a complete reference of StringBuilder methods, go to our Java StringBuilder Methods Reference.
The reference contains descriptions and examples of all StringBuilder methods.