×

StringBuffer in Java

StringBuffer in Java

Similar to StringBuilder, the Java StringBuffer class is also used to create modifiable or mutable strings. The StringBuilder class is synchronized, i.e., thread-safe.


Java StringBuffer Constructor

The StringBuffer class has the following four constructors.

1) StringBuffer(): The parameter less constructor that creates an empty String Buffer and provides the initial size of the buffer for 16 characters.

2) StringBuffer(int s): It is a parameterized constructor that builds an empty String Builder and provides the initial size (s) of the buffer specified in the argument.

4) StringBuffer(String st): Another parametrized constructor that makes a non-empty String Buffer using the content provided in the argument. It also allocates space for 16 more characters.

Java Program

The following code uses the above-mentioned constructors to create objects of the StringBuffer class.

FileName: StringBufferExample.java

// A Java program to demonstrate StringBuffer

 import java.util.*;
public class StringBufferExample
{
// main method
public static void main(String argvs[]) throws Exception
{
// build a StringBuilder object
// using the parameterless constructor
StringBuffer sb = new StringBuffer();
int capacity = sb.capacity();
System.out.println("Capacity of the Buffer is = " + capacity);
// building a StringBuffer object
// using the StringBuffer(int s) constructor
StringBuilder sb1 = new StringBuilder(10);
// display string on the console
System.out.println("Capacity of the Buffer is = " + sb1.capacity());
String str = "Tutorial & Example";
// build a StringBuffer object
// using the StringBuffer(String) constructor
StringBuilder sb2 = new StringBuilder(str);
// display string on the console
System.out.println("The String is = " + sb2);
capacity = sb2.capacity();
System.out.println("Capacity of the Buffer is = " + capacity);
}
} 

Output:

 Capacity of the Buffer is = 16
Capacity of the Buffer is = 10
The String is = Tutorial & Example
Capacity of the Buffer is = 34 


Explanation: The last statement of the output shows the capacity as 34. The size of the string “Tutorial & Example” is 18, and room for 16 more characters is provided by the

 constructor making the total capacity as 18 + 16 = 34.

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

Method NameDescription
public synchronized StringBuffer 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 type like append(int), append(float), etc.
public synchronized StringBuffer replace(int start, int end, String s)Replaces the specified string from index start to index end using the string s.
public synchronized StringBuffer delete(int start, int end)Used to delete the character from the start index to the end index from the specified string.
public int capacity()Renders the capacity of the buffer
public synchronized StringBuffer reverse()Modifies the given string by reversing the order of its character
public void ensureCapacity(int capacity)Ensures that the minimum capacity of the buffer is always greater than or equal to the capacity specified in the parameter
public int length()Returns the total number of characters present in the string.
public String substring(int i)Return the substring whose ending is in the last character of the specified  substring, and the first character is the character positioned at the index i, which is mentioned in the argument.
public String substring(int sIndex, int eIndex)Returns the substring which starts from the index sIndex, and ends at eIndex.
public char charAt(int i)Returns the character present at the specified index i.


Let’s understand the methods one by one through Java programs.

The append() method

FileName: StringBufferMethodsExample.java

 public class StringBufferMethodsExample
{ 
    // main method
    public static void main(String argvs[])
    { 
        // creating an object of the String Buffer class
        StringBuffer sb = new StringBuffer("Hello World "); 
        System.out.println("String before the append method is invoked - " + sb);
        sb.append("New Java "); // adding the string “New Java” at the end of the string 
        System.out.println(); // new line
        System.out.println("String after the append method is invoked  - " + sb);
    } 
} 

Output:

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

Explanation: It is evident that the append() method inserts the specified string at the end of the given string.
The charAt() method
FileName: StringBufferMethodsExample1.java

public class StringBufferMethodsExample1
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer("Hello World "); 
    int i = 6; // 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 6 is W

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

The replace() method

FileName: StringBufferMethodsExample2.java

 public class StringBufferMethodsExample2
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer("Hello World "); 
    System.out.println("The given string is " + sb);
    // starting and ending index
    int start = 9;
    int end = 11;
    // string that does the replacement
    String str = "zz";
    // invoking the replace() method
    StringBuffer 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 Worzz 

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 9  to (11 – 1), i.e., 9 to 10. Thus, characters ‘r’ and ‘l’ are omitted, and the output confirms the same.

The delete() method

FileName: StringBufferMethodsExample3.java

 public class StringBufferMethodsExample3
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuffer sb = new StringBuffer("Hello World "); 
    System.out.println("The given string is " + sb);
    // specifying the starting and ending index
    int startIndex = 0;
    int endIndex = 4; // ennIndex – 1 will be considered.
    // invoking the delete() method
    StringBuffer 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 o World 

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, the characters ‘H’, ‘e’, ‘l’, ‘l’  from the given string get erased, which is evident by looking at the output.

The capacity() method

FileName: StringBufferMethodsExample4.java

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

Output:

The capacity of the buffer is: 16

Explanation: Similar to the StringBuilder class, in StringBuffer also, calling the parameter less constructor gives the buffer capacity 16.

The ensureCapacity() method

FileName: StringBufferMethodsExample5.java

 public class StringBufferMethodsExample5
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer( );
    int minCapacity = 40;
    // 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 of the buffer is: " + capacity);
} 
}  

Output:

The current capacity of the buffer is: 40

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

The reverse() method

FileName: StringBufferMethodsExample6.java

 public class StringBufferMethodsExample6
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer("Hello World "); 
    System.out.println("The given string is " + sb);
    // invoking the reverse() method
    StringBuffer 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 length() method

FileName: StringBufferMethodsExample7.java

 public class StringBufferMethodsExample7
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer("Hello World "); 
    System.out.println("The given string is " + sb);
    // invoking the length() method
    int length = sb.length();
    System.out.println(); // new line
    System.out.println("The length of the string is " + length);
} 
}  

Output:

 The given string is Hello World
The length of the string is 12 

Explanation: The length() method counts the total number of characters present in the input string.

The substring() method - I

FileName: StringBufferMethodsExample8.java

 public class StringBuilderMethodsExample8
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Builder class
    StringBuffer sb = new StringBuffer("Hello World In The String Buffer"); 
    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 In The String Buffer
The substring starting from index 6 is World In The String Buffer 

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: StringBufferMethodsExample9.java

 public class StringBufferMethodsExample9
{ 
// main method
public static void main(String argvs[])
{ 
    // creating an object of the String Buffer class
    StringBuffer sb = new StringBuffer("Hello World In The String Buffer"); 
    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 In The String Buffer
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. Note that the starting and the ending index have to be within the range of the input string; otherwise, the StringIndexOutOfBoundsException is raised.


Related Topics

Java Identifiers

In Java, the symbolic notations used for identification are called identifiers. Identifiers can be the name for the class, variable name declaration, name of the package, constant name and many...

3 minutes read.

Java Generate Random String

Java Generate Random String In this tutorial, we will learn about to generate random string in Java. Random generation strings mean any string will be generated, which does not follow any...

7 minutes read.

ArrayList vs Vector in Java

ArrayList Vs. Vector in Java In Java, the two classes ArrayList and Vector both are associated with Java Collections Framework. Both classes implement java.util.List interface. Even so, these classes have noticeable...

4 minutes read.

How to Create a Generic List in Java?

Generics are types that have parameters. The goal is to make it possible for methods, classes, and interfaces to take type (Integer, String, etc., and user-defined types) as a parameter....

4 minutes read.

Interfaces and Classes in Strings in Java

CharBuffer: CharBuffer is utilized to implement the CharSequence interface. With the help of the mentioned class, we can allow character buffers to be utilized instead of CharSequences. We can consider the illustration...

4 minutes read.

Java Custom Exception

Java Custom Exception Java language facilitates us to create our own exceptions. The class intended to throw the Custom Exception has to be derived from the Java Exceptionor RuntimeExceptionclass. The Java...

4 minutes read.

How to generate random numbers in Java

Random numbers, also known as fake numbers, are actually a part of a very large sequence, so they are called random numbers. In a defined set of numbers, every number...

6 minutes read.

Java LinkedHashSet

LinkedHashSet in Java with Example Java LinkedHashSet extends HashSet and Implements the Set interface. It doesn’t contain only duplicate values like HashSet. It also permits the null elements. It maintains the order...

5 minutes read.

Loose Coupling in Java

Loosely coupling mechanism in java means one reference of a variable capable of holding multiple implementation class memory is called loosely coupling. Or in other words, one interface reference variable...

3 minutes read.

How to Calculate the Time Difference between Two Dates in Java?

The date is used extensively in Java to calculate date discrepancies. The date of joining an organization, admittance, appointment, etc., can be included when creating the application. The differences between...

4 minutes read.

How to set timer in Java

In this article, you will be very well equipped with the knowledge to set timer in java. The timer in java can be set by using timer class provided by...

3 minutes read.

Dangling Else problem in Java

A language interpretation uncertainty is the hanging other issue. The following two types of condition executed code are both possible in programming: 1. if-then-else form 2. if-then form When dealing with the nested...

3 minutes read.

Frugal number in Java

A frugal number is a positive integer with base b that has more digits than the number of prime factors it can be factored into (including exponents greater than 1)....

3 minutes read.

Java Exception Propagation

Java Exception Propagation When an exception is being thrown from the peak of the stack and not getting caught, it runs down the stack to the previous method, which is sitting...

3 minutes read.

How to Create an Object in Java

How to Create an Object in Java An object can be defined as a run time entity that contains the blue printof the class. It means that all the member functions...

5 minutes read.

Selection Sort in Java

Selection Sort in Java Selection sort is also a simple sorting algorithm that works by repeatedly finding the minimum element from the unsorted portion of the input array, and placing it...

5 minutes read.

How to Create Different Packages for Different Classes in Java

Packages in Java In Java, Packages are an assortment of classes, sub-packages, and connection points. i.e. A package addresses a word reference that contains a connected gathering of styles and points...

7 minutes read.

Activity selection problem in Java

The activity selection problem is a multiple objective problem hat requires choosing non-conflicting tasks to complete within a specific amount of time from a list of tasks identified by a...

5 minutes read.

Java Font

The font is a Java class that is a part of java.awt package. The Serializable interface is implemented by it. The direct recognized child of a Java Font class is...

8 minutes read.

Tree Implementation in Java

Introduction to Tree A non-linear, hierarchical data structure called a "tree" is made up of a number of nodes, each of which contains a values and a sequence of pointers to...

14 minutes read.