Instance methods of StringBuffer
Below, we describe some methods of StringBuffer assuming that q is a
variable of that class. There are two constructors:
• new StringBuffer(): = a new StringBuffer that contains "" .
• new StringBuffer(p): = a new StringBuffer that contains String p .
Functions q.length , q.charAt() , q.substring , and q.toString have
their counterparts in class String and need no discussion.
The following procedure calls change q . We omit various restrictions on the
arguments of procedure calls; see the footnotes on lesson page 5-4 of the CD for
a full description, as well as examples.
• q.setCharAt(i, c);
Change q[i] to character c .
Append x to q . Arg. x can be of any primitive
type or class type; if not a String , it is
converted to a String and appended.
• q.delete(h, k);
Delete substring q[h..k - 1] from q .
• q.deleteCharAt(k) ;
Delete character q[k] from q .
• q.insert(k, x);
Change q to q[0..k - 1] + x + q[k..] .
Convert x to a String , if necessary.
• q.replace(h, k, x);
Replace q[h..k - 1] by String x .
Reverse the characters of q , so it reads backward.
• q.setLength(n) :
Set the length of q to n , either deleting a suffix or
appending null characters '\u0000' as necessary.
Java's use of StringBuffers
StringBuffers are actually used to implement operation catenation + . For
example, assuming that x is String variable, the statement
x= "a " + 12;
is compiled into the equivalent of:
x= new StringBuffer().append("a ").append(12).toString();
A StringBuffer is created, and strings are appended to it. Finally, the
StringBuffer is converted to a String , which is assigned to x .
Extracting an integer from a StringBuffer
At the end of Sec. 5.2.4, we developed a sequence of statements to remove
an unsigned integer from a string. In Fig. 5.2, we define a function that removes
and returns an unsigned integer from its StringBuffer parameter. We cannot
write a similar function with a String parameter because Strings are
immutable. This is indeed a situation where a StringBuffer should be used.
Functions trim and indexOf do not exist in StringBuffer , so we wrote
loops to find the index of the first nonblank and the index of the first blank.
See a footnote
on lesson page
5-4 to get this