StringBuilder in Java represents a mutable sequence of characters. Since the String Class in Java creates an immutable sequence of characters, the StringBuilder class provides an alternative to String Class, as it creates a mutable sequence of characters. The function of StringBuilder is very much similar to the StringBuffer class, as both of them provide an alternative to String Class by making a mutable sequence of characters. However, the StringBuilder class differs from the StringBuffer class on the basis of synchronization. The StringBuilder class provides no guarantee of synchronization whereas the StringBuffer class does. Therefore this class is designed for use as a drop-in replacement for StringBuffer in places where the StringBuffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations. Instances of StringBuilder are not safe for use by multiple threads. If such synchronization is required then it is recommended that StringBuffer be used. String Builder is not thread-safe and high in performance compared to String buffer.
The class hierarchy is as follows:
java.lang.Object ↳ java.lang ↳ Class StringBuilder
Syntax:
public final class StringBuilder extends Object implements Serializable, CharSequence
Constructors in Java StringBuilder Class
- StringBuilder(): Constructs a string builder with no characters in it and an initial capacity of 16 characters.
- StringBuilder(int capacity): Constructs a string builder with no characters in it and an initial capacity specified by the capacity argument.
- StringBuilder(CharSequence seq): Constructs a string builder that contains the same characters as the specified CharSequence.
- StringBuilder(String str): Constructs a string builder initialized to the contents of the specified string.
Below is a sample program to illustrate StringBuilder in Java.
Java
// Java Code to illustrate StringBuilder import java.util.*; import java.util.concurrent.LinkedBlockingQueue; public class GFG1 { public static void main(String[] argv) throws Exception { // Create a StringBuilder object // using StringBuilder() constructor StringBuilder str = new StringBuilder(); str.append( "GFG" ); // print string System.out.println( "String = " + str.toString()); // create a StringBuilder object // using StringBuilder(CharSequence) constructor StringBuilder str1 = new StringBuilder( "AAAABBBCCCC" ); // print string System.out.println( "String1 = " + str1.toString()); // create a StringBuilder object // using StringBuilder(capacity) constructor StringBuilder str2 = new StringBuilder( 10 ); // print string System.out.println( "String2 capacity = " + str2.capacity()); // create a StringBuilder object // using StringBuilder(String) constructor StringBuilder str3 = new StringBuilder(str1.toString()); // print string System.out.println( "String3 = " + str3.toString()); } } |
String = GFG String1 = AAAABBBCCCC String2 capacity = 10 String3 = AAAABBBCCCC
Methods in Java StringBuilder
StringBuilder append(X x): This method appends the string representation of the X type argument to the sequence.
- StringBuilder appendCodePoint(int codePoint): This method appends the string representation of the codePoint argument to this sequence.
- int capacity(): This method returns the current capacity.
- char charAt(int index): This method returns the char value in this sequence at the specified index.
- IntStream chars(): This method returns a stream of int zero-extending the char values from this sequence.
- int codePointAt(int index): This method returns the character (Unicode code point) at the specified index.
- int codePointBefore(int index): This method returns the character (Unicode code point) before the specified index.
- int codePointCount(int beginIndex, int endIndex): This method returns the number of Unicode code points in the specified text range of this sequence.
- IntStream codePoints(): This method returns a stream of code point values from this sequence.
- StringBuilder delete(int start, int end): This method removes the characters in a substring of this sequence.
- StringBuilder deleteCharAt(int index): This method removes the char at the specified position in this sequence.
- void ensureCapacity(int minimumCapacity): This method ensures that the capacity is at least equal to the specified minimum.
- void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): This method characters are copied from this sequence into the destination character array dst.
- int indexOf(): This method returns the index within this string of the first occurrence of the specified substring.
- StringBuilder insert(int offset, boolean b): This method inserts the string representation of the boolean alternate argument into this sequence.
- StringBuilder insert(): This method inserts the string representation of the char argument into this sequence.
- int lastIndexOf(): This method returns the index within this string of the last occurrence of the specified substring.
- int length(): This method returns the length (character count).
- int offsetByCodePoints(int index, int codePointOffset): This method returns the index within this sequence that is offset from the given index by codePointOffset code points.
- StringBuilder replace(int start, int end, String str): This method replaces the characters in a substring of this sequence with characters in the specified String.
- StringBuilder reverse(): This method causes this character sequence to be replaced by the reverse of the sequence.
- void setCharAt(int index, char ch): In this method, the character at the specified index is set to ch.
- void setLength(int newLength): This method sets the length of the character sequence.
- CharSequence subSequence(int start, int end): This method returns a new character sequence that is a subsequence of this sequence.
- String substring(): This method returns a new String that contains a subsequence of characters currently contained in this character sequence.
- String toString(): This method returns a string representing the data in this sequence.
- void trimToSize(): This method attempts to reduce storage used for the character sequence.
Example:
Java
// Java code to illustrate // methods of StringBuilder import java.util.*; import java.util.concurrent.LinkedBlockingQueue; public class GFG1 { public static void main(String[] argv) throws Exception { // create a StringBuilder object // with a String pass as parameter StringBuilder str = new StringBuilder( "AAAABBBCCCC" ); // print string System.out.println( "String = " + str.toString()); // reverse the string StringBuilder reverseStr = str.reverse(); // print string System.out.println( "Reverse String = " + reverseStr.toString()); // Append ', '(44) to the String str.appendCodePoint( 44 ); // Print the modified String System.out.println( "Modified StringBuilder = " + str); // get capacity int capacity = str.capacity(); // print the result System.out.println( "StringBuilder = " + str); System.out.println( "Capacity of StringBuilder = " + capacity); } } |
String = AAAABBBCCCC Reverse String = CCCCBBBAAAA Modified StringBuilder = CCCCBBBAAAA, StringBuilder = CCCCBBBAAAA, Capacity of StringBuilder = 27
StringBuilder is another class in Java that is used to manipulate strings. Like StringBuffer, it is a mutable class that allows you to modify the contents of the string it represents. However, StringBuilder is not thread-safe, so it should not be used in a multi-threaded environment.
Here are some examples of how to use StringBuilder in Java:
Java
public class StringBuilderExample { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append( "Hello" ); sb.append( " " ); sb.append( "world!" ); System.out.println(sb.toString()); // Output: "Hello world!" sb.insert( 6 , "beautiful " ); System.out.println(sb.toString()); // Output: "Hello beautiful world!" sb.reverse(); System.out.println(sb.toString()); // Output: "!dlrow lufituaeb olleH" } } |
Hello world! Hello beautiful world! !dlrow lufituaeb olleH