Programming in Java
Lecture 13: StringBuffer
By
Ravi Kant Sahu
Asst. Professor
Lovely Professional University, PunjabLovely Professional University, Punjab
Introduction
 A string buffer implements a mutable sequence of characters.
 A string buffer is like a String, but can be modified.
 At any point in time it contains some particular sequence of
characters, but the length and content of the sequence can be
changed through certain method calls.
 Every string buffer has a capacity.
 When the length of the character sequence contained in the
string buffer exceed the capacity, it is automatically made
larger.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Introduction
 String buffers are used by the compiler to implement the
binary string concatenation operator +.
 For example:
x = "a" + 4 + "c"
is compiled to the equivalent of:
x = new StringBuffer().append("a").append(4).
append("c") .toString()
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Why StringBuffer?
 StringBuffer is a peer class of String that provides much of the
functionality of strings.
 String represents fixed-length, immutable character sequences. In
contrast, StringBuffer represents growable and writeable character
sequences.
 StringBuffer may have characters and substrings inserted in the
middle or appended to the end.
 StringBuffer will automatically grow to make room for such
additions.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
StringBuffer Constructors
 StringBuffer defines these four constructors:
◦ StringBuffer( )
◦ StringBuffer(int size)
◦ StringBuffer(String str)
◦ StringBuffer(CharSequence chars)
 The default constructor reserves room for 16 characters without
reallocation.
 By allocating room for a few extra characters(size +16),
StringBuffer reduces the number of reallocations that take place.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
StringBuffer Methods
length( ) and capacity( )
The current length of a StringBuffer can be found via the length( ) method,
while the total allocated capacity can be found through the capacity( )
method.
int length( )
int capacity( )
Example:
class StringBufferDemo {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer(“New Zealand");
System.out.println("length = " + sb.length());
System.out.println("capacity = " + sb.capacity());
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
ensureCapacity( )
 If we want to preallocate room for a certain number of
characters after a StringBuffer has been constructed, we can
use ensureCapacity( ) to set the size of the buffer.
 This is useful if we know in advance that we will be
appending a large number of small strings to a StringBuffer.
void ensureCapacity(int capacity)
 Here, capacity specifies the size of the buffer.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
setLength( )
 used to set the length of the buffer within a StringBuffer object.
void setLength(int length)
 Here, length specifies the length of the buffer.
 When we increase the size of the buffer, null characters are added to
the end of the existing buffer.
 If we call setLength( ) with a value less than the current value
returned by length( ), then the characters stored beyond the new
length will be lost.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
charAt( ) and setCharAt( )
 The value of a single character can be obtained from a
StringBuffer via the charAt( ) method.
 We can set the value of a character within a StringBuffer using
setCharAt( ).
char charAt(int index)
void setCharAt(int index, char ch)
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
getChars( )
 getChars( ) method is used to copy a substring of a
StringBuffer into an array.
void getChars(int sourceStart, int sourceEnd, char target[ ],
int targetStart)
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
append( )
 The append( ) method concatenates the string representation
of any other type of data to the end of the invoking
StringBuffer object.
 It has several overloaded versions.
◦ StringBuffer append(String str)
◦ StringBuffer append(int num)
◦ StringBuffer append(Object obj)
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Example
class appendDemo {
public static void main(String args[]) {
String s;
int a = 42;
StringBuffer sb = new StringBuffer(40);
s = sb.append("a = ").append(a).append("!")
.toString();
System.out.println(s);
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
insert( )
 The insert( ) method inserts one string into another.
 It is overloaded to accept values of all the simple types, plus
Strings, Objects, and CharSequences.
 This string is then inserted into the invoking StringBuffer
object.
◦ StringBuffer insert(int index, String str)
◦ StringBuffer insert(int index, char ch)
◦ StringBuffer insert(int index, Object obj)
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Example
class insertDemo {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer("I Java!");
sb.insert(2, "like ");
System.out.println(sb);
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
reverse( )
 Used to reverse the characters within a StringBuffer object.
 This method returns the reversed object on which it was
called.
Example:
class ReverseDemo {
public static void main(String args[]) {
StringBuffer s = new StringBuffer(“Banana");
System.out.println(s);
s.reverse();
System.out.println(s);
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
delete( ) and deleteCharAt( )
 Used to delete characters within a StringBuffer.
StringBuffer delete(int startIndex, int endIndex)
StringBuffer deleteCharAt(int index)
 The delete( ) method deletes a sequence of characters from the
invoking object.
 The deleteCharAt( ) method deletes the character at the
specified index.
 It returns the resulting StringBuffer object.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Example
class deleteDemo {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer(“She is not a good girl.”);
sb.delete(7, 11);
System.out.println("After delete: " + sb);
sb.deleteCharAt(7);
System.out.println("After deleteCharAt: " + sb);
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
replace( )
 Used to replace one set of characters with another set inside a
StringBuffer object.
StringBuffer replace(int startIndex, int endIndex, String str)
 The substring being replaced is specified by the indexes startIndex
and endIndex.
 Thus, the substring at startIndex through endIndex–1 is replaced.
 The replacement string is passed in str.
 The resulting StringBuffer object is returned.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Example
class replaceDemo {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer("This is a test.");
sb.replace(5, 7, "was");
System.out.println("After replace: " + sb);
}
}
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
substring( )
 Used to obtain a portion of a StringBuffer by calling substring( ).
String substring(int startIndex)
String substring(int startIndex, int endIndex)
 The first form returns the substring that starts at startIndex and
runs to the end of the invoking StringBuffer object.
 The second form returns the substring that starts at startIndex
and runs through endIndex–1.
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)
Ravi Kant Sahu, Asst. Professor @ Lovely Professional University, Punjab (India)