×

StringBuilder in Java

StringBuilder in Java

Java StringBuilder class is introduced since JDK 1.5. The StringBuilder class is mainly used to create modifiable or mutable strings. Note that the StringBuilder class is not synchronized. The methods of the StringBuilder class are very much identical to the methods of the StringBuffer class.


Java StringBuilder Constructor

The StringBuilder class provides the following constructors:

1) StringBuilder(): The default constructor creates an empty StringBuilder and provides the initial capacity for 16 characters.

2) StringBuilder(int capacity): The parameterized constructor creates an empty StringBuilder and provides the capacity specified in the argument.

3)StringBuilder(CharSequence sequence): Another parametrized constructor that builds a non-empty String builder using the character sequence mentioned in the argument.

4) StringBuilder(String st): Another parametrized constructor that makes a non-empty String Builder using the content provided in the argument.
The following code uses the above-mentioned constructors to create objects of the StringBuilder class.

FileName: StringBuilderExample.java

 // A Java program to demonstrate StringBuilder
import java.util.*;
public class StringBufferExample
{
// main method
public static void main(String argvs[]) throws Exception
{
// build a StringBuilder object
// using the parameterless constructor
StringBuilder st = new StringBuilder();
st.append("Tutorial & Example");
// display string on the console
System.out.println("The First String = " + st.toString() );
// building a StringBuilder object
// using the StringBuilder(Charseq) constructor
StringBuilder st1 = new StringBuilder("AAABBCC");
// display string on the console
System.out.println("The Second String = " + st1.toString() );
// building a StringBuilder object
// using the StringBuilder(capacity) constructor
StringBuilder st2 = new StringBuilder(11);
// display string on the console
System.out.println("The capacity of the String Builder is = " + st2.capacity());
String s = "ABC";
// build a StringBuilder object
// using the StringBuilder(String) constructor
StringBuilder st3 = new StringBuilder(s);
// display string on the console
System.out.println("The Third String = " + s.toString());
}
} 

Output:

 The First String = Tutorial & Example
The Second String = AAABBCC
The capacity of the String Builder is = 11
The Third String = ABC 


Explanation: After creating different objects of the StringBuilder class, the toString() method is invoked on the objects to return the string, which represents the data contained in the String Builder object.

Java StringBuilder Class Methods
The StringBuilder class has a lot of inbuilt methods. A few of them are mentioned below.

Method NameDescription
public StringBuilder append(String str)Used to add string str at the end of the string on which the append() method is called. The append() method is overloaded with primitive data types like append(int), append(float), etc.
public StringBuilder replace(int start, int end, String s)Replaces the specified string from index start to index end using the string s.
public StringBuilder delete(int start, int end)Modifies the specified string by deleting its characters from the start index to the end index.
public int capacity()Returns the capacity
public char charAt(int idx)Whatever character is present at the index idx gets returned upon the invocation of this method.
public String substring(int i)Returns a substring of the specified string that starts from the index i
public String substring(int start, int end)Returns a substring of the specified string that starts from the index start and goes till the end index.
public StringBuilder reverse()Manipulates the specified string by reversing it
public void ensureCapacity(int minCapacity)Ensures that capacity is at least equal to the argument minCapacity
public StringBuilder delete(int start, int end)Modifies the specified string by deleting characters from the start index to end index
public StringBuilder insert(int offset, String str)Inserts the string str in the specified string at the particular location by using the help of offset. The overloaded version of the method also exists for primitive data types.
public void setCharAt(int i, char c)Modifies the given string by replacing the character at the index i with character c.


Let’s use the StringBuilder class methods in Java program.

The insert() method

FileName: StringBuilderMethodsExample.java

 public class StringBuilderMethodsExample
{ 
    // main method
    public static void main(String argvs[])
    { 
        // creating an object of the String Builder class
        StringBuilder sb = new StringBuilder("Hello World "); 
        System.out.println("String before the insert method is invoked - " + sb);
        sb.insert(0,"New Java "); // inserting the string “New Java” at the index 0 
        System.out.println(); // new line
        System.out.println("String after the insert method is invoked  - " + sb);
    } 
}  

Output:

 String before the insert method is invoked - Hello World
String after the insert method is invoked  - New Java Hello World 

Explanation: It is evident that, when the insert() method inserts the specified string at any specified index, the characters present at, and after that index gets shifted to make space for the string to be inserted.

The charAt() method

FileName: StringBuilderMethodsExample1.java

 public class StringBuilderMethodsExample1
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    int i = 7; // i represents index
    // ch stores the character present at index i
    char ch  = sb.charAt(i);
    // displaying the character present at the index i
    System.out.println("Character present at the index " + i + " is " + ch);
} 
}  

Output:

Character present at the index 7 is o

Explanation: In the above program, the variable ch stores the character present at the index i.

The replace() method

FileName: StringBuilderMethodsExample2.java

 public class StringBuilderMethodsExample2
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    System.out.println("The given string is " + sb);
    // starting and ending index
    int start = 8;
    int end = 10;
    // string that does the replacement
    String str = "ooo";
    // invoking the replace() method
    StringBuilder newSb = sb.replace(start, end, str);
    System.out.println(); // new line
    System.out.println("The updated string is " + newSb);
} 
}  

Output:

 The given string is Hello World
The updated string is Hello Wooood 

Explanation: The replace() method considers the indices just before the end index, starting from the start index. Thus, as per the above program, the replace() method considers indices from 8  to (10 – 1), i.e., 8 to 9. Thus, characters ‘r’ and ‘l’ are omitted, and the output confirms the same.

The delete() method

FileName: StringBuilderMethodsExample3.java

 public class StringBuilderMethodsExample3
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    System.out.println("The given string is " + sb);
    // starting and ending index
    int startIndex = 8;
    int endIndex = 10;
    // invoking the delete() method
    StringBuilder newSb = sb.delete(startIndex, endIndex);
    System.out.println(); // new line
    System.out.println("The updated string is " + newSb);
} 
}  

Output:

 The given string is Hello World
The updated string is Hello Wod 

Explanation: Similar to the replace() method, the delete() method considers the index, which is just before the specified ending index, as its last index (endIndex – 1 in our case). The start index is startIndex. Hence, characters ‘r’ and ‘l’ get omitted, which is evident by looking at the output.

The reverse() method

FileName: StringBuilderMethodsExample4.java

 public class StringBuilderMethodsExample4
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    System.out.println("The given string is " + sb);
    // invoking the reverse() method
    StringBuilder newSb = sb.reverse();
    System.out.println(); // new line
    System.out.println("The updated string is " + newSb);
} 
}  

Output:

 The given string is Hello World
The updated string is  dlroW olleH 

Explanation: In the program, the variable newSb stores the reversed string that is getting displayed in the output. The reverse() method comes in handy when one wants to check for palindromic strings.

The substring() method - I

FileName: StringBuilderMethodsExample5.java

 public class StringBuilderMethodsExample5
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    System.out.println("The given string is " + sb);
    int index  = 6;
    // invoking the substring() method
    String newSb = sb.substring(index);
    System.out.println(); // new line
    System.out.println("The substring starting from index " + index + " is " + newSb);
} 
}  

Output:

 The given string is Hello World
The substring starting from index 6 is World 

Explanation: In the above program, we have only specified the starting index of the substring. The last index of the substring automatically becomes the last index of the given string.

The substring() method - II

FileName: StringBuilderMethodsExample6.java

 public class StringBuilderMethodsExample6
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World "); 
    System.out.println("The given string is " + sb);
    int startIndex  = 6;
    int endIndex = 9;
    // invoking the substring() method
    String newSb = sb.substring(startIndex, endIndex);
    System.out.println(); // new line
    System.out.println("The substring starting from index "  + startIndex + " and ending at " + endIndex + " is " + newSb);
} 
}  

Output:

 The given string is Hello World
The substring starting from index 6 and ending at 9 is Wor 

Explanation: The substring() method used in the above program is another version that requires the ending index too. Thus, whatever is present between the starting and ending index gets printed on the console.

The capacity() method

FileName: StringBuilderMethodsExample7.java

 public class StringBuilderMethodsExample7
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder( );
    // invoking the method capacity
    int capacity = sb.capacity();
    System.out.println("The current capacity is: " + capacity);
} 
}  

Output:

The current capacity is: 16

Explanation: In the program, the parameterless constructor is invoked. Therefore, the capacity is 16.

The ensureCapacity() method

FileName: StringBuilderMethodsExample8.java

 public class StringBuilderMethodsExample8
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder( );
    int minCapacity = 50;
    // invoking the method ensureCapacity(), with minCapacity as its argument
    sb.ensureCapacity(minCapacity);
    // invoking the method capacity
    int capacity = sb.capacity();
    System.out.println("The current capacity is: " + capacity);
} 
}  

Output:

The current capacity is: 50

Explanation: In the above program, the ensureCapacity() method takes minCapacity in its argument. Therefore, the current capacity has to be greater than or equal to the value fetched by the variable minCapacity.

The setCharAt() method

FileName: StringBuilderMethodsExample9.java

 public class StringBuilderMethodsExample9
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuilder sb = new StringBuilder("Hello World" );
    // specifies the index at which
    // updation is going to take place
    int index = 7;
    // the new character to be inserted
    char newChar = 'r';
    // invoking the setCharAt() method
    sb.setCharAt(index, newChar);
    System.out.println("The current string is: " + sb);
} 
}  

Output:

The current string is: Hello Wrrld

Explanation: The setCharAt() method replaces the character present at the specified with the character provided by the user in its argument. In the above program, the character ‘o’ of the word ‘World’ is getting replaced by the character ‘r’.


Related Topics

Java Math rint() Method

The rint() method of Java Math class returns the double value which is close to the specified argument and is equal to mathematical integer. Syntax: public static double rint(double a) Parameters: The parameter ‘a’...

1 minute read.

How to Print array in Java?

A Java array is a data structure that allows us to hold components of the same data type. An array's items are kept in a single memory region. As a...

6 minutes read.

Constructor in Java with Example

Java Constructor  The constructor is used for object initialization. It's a block of code that initializes a newly created object. It contains a collection of statements that are executed at the...

5 minutes read.

Java.net.SocketException

Exception The problem occurred during the execution of the program. If an exception occurs in the program, the program gets terminated. To skip the exception occurring statements, we have to handle...

4 minutes read.

Java Comparator Interface

Java comparator interface is used in a situation when we have to sort an object which does not implement Comparable or do sorting in a different way than the Comparable....

1 minute read.

Java Class Methods

Methods called on a class rather than a specific object instance are known as class methods. The static modifier guarantees uniform implementation across all instances of the class. Syntax public class NameOfClass...

3 minutes read.

Various Operation on Queue using Linked List in Java

We keep track of front and rear pointers in a queue data structure. The head of the line points to the first item, and the back to the last. Rear is...

3 minutes read.

Java Short Keyword

Java supports eight different primitive datatypes. The language has predefined primitive datatypes that are given keyword names. Let's take a closer look at each of the eight primitive data types....

3 minutes read.

Difference Between Data Hiding and Abstraction in Java

Abstraction: Data Abstraction and Data Hiding ideas are utilised to show the expected data to the end client and conceal the superfluous subtleties, however, for specific purposes like decreasing the framework's...

10 minutes read.

Java Byte Keyword

Byte: The Keyword Byte in Java programming language is a primitive data type.Digital content that is most used for eight bits is called as a byte.The Java Byte Keyword is used...

3 minutes read.

Alice and Bob Problem Java

Alice and Bob were two friends who liked to play games. Both together found a game, which has the description below. The game begins with an integer num, used to create...

2 minutes read.

Radix Sort in Java

Radix Sort in Java Radix sort in Java uses the digits of the numbers given in the sorted array to sort the numbers. The radix sort uses the place value of...

5 minutes read.

Print Matrix Diagonally in Java

The aim is to print the elements of a matrix of size n*n in some kind of a diagonal pattern. Input : mat[3][3] = {{1, 2, 3},                      {4, 5, 6},                      {7,...

3 minutes read.

Java Class Syntax

A class is a fundamental building piece in object-oriented programming. It can be characterised as a template that outlines the information and actions connected to the creation of a class....

3 minutes read.

Instanceof operator in Java

To determine whether an object is an instance of the supplied type in Java, use the instanceof operator (class or subclass or interface). Because it compares the instance with type, the...

3 minutes read.

Java Math floor() Method

The floor() method of Math class returns the largest double value that is equal to a mathematical integer and is less than or equal to the argument. Syntax: public static double floor(double...

2 minutes read.

How to Convert long to String in Java

How to Convert long to String in java It is used if we have to display a long number in the text field because everything is displayed as a String. A...

3 minutes read.

Get yesterdays date by no of days in Java

In this tutorial, we are going to learn how to get yesterday’s date by the no of days in Java. Using the Calendar class, one can get the current date....

1 minute read.

Difference between JIT and JVM in Java

In this tutorial, we will discuss the difference between JIT (Just In Time Compiler) and JVM (Java Virtual Machine) in Java. Before we move to the differences, let's understand what...

4 minutes read.

Java Technologies List

Introducing Java technology is not necessary. Everyone across the globe is still in awe of Java's incredible capabilities for developing mobile apps and websites. Of course, you can be persuaded...

8 minutes read.