Table of Contents |
Thejava.lang
package contains two string classes:String
andStringBuffer
. You've already seen theString
class on several occasions in this tutorial. You use theString
class when you are working with strings that cannot change.StringBuffer
, on the other hand, is used when you want to manipulate the contents of the string on the fly.The
reverseIt
method in the following code uses both theString
andStringBuffer
classes to reverse the characters of a string. If you have a list of words, you can use this method in conjunction with a sort program to create a list of rhyming words (a list of words sorted by ending syllables). Just reverse all the strings in the list, sort the list, and reverse the strings again. You can see thereverseIt
method producing rhyming words in the example in Using Input and Output Streams that shows you how to use piped streams.Theclass ReverseString { public static String reverseIt(String source) { int i, len = source.length(); StringBuffer dest = new StringBuffer(len); for (i = (len - 1); i >= 0; i--) { dest.append(source.charAt(i)); } return dest.toString(); } }reverseIt
method accepts an argument of typeString
calledsource
that contains the string data to be reversed. The method creates aStringBuffer
,dest
, the same size assource
. It then loops backwards over all the characters insource
and appends them todest
, thereby reversing the string. Finally, the method convertsdest
, aStringBuffer
, to aString
.In addition to highlighting the differences between
String
s andStringBuffer
s, this lesson illustrates several features of theString
andStringBuffer
classes: creatingString
s andStringBuffer
s, using accessor methods to get information about aString
orStringBuffer
, modifying aStringBuffer
, and converting one type of string to another.
Note to C and C++ Programmers: Java strings are first-class objects, unlike C and C++ strings, which are simply null-terminated arrays of 8-bit characters.
Why Two String Classes?
The Java development environment provides two classes that store and manipulate character data:String
, for constant strings, andStringBuffer
, for strings that can change.Creating
Strings
andStringBuffer
sThe following statement taken from thereverseIt
method creates a newStringBuffer
in three steps: declaration, instantiation, and initialization.These are the same steps for creating an object of any type.StringBuffer dest = new StringBuffer(len);Accessor Methods
ThereverseIt
method uses two accessor methods to obtain information about thesource
string:charAt
andlength
. BothString
andStringBuffer
provide a number of other accessor methods, including some for inspecting substrings and getting the positions of a specific character.Modifying
StringBuffer
sThereverseIt
method usesStringBuffer
'sappend
method to add characters todest
. In addition toappend
,StringBuffer
provides methods to insert characters into the buffer, modify a character at a specific location within the buffer, and so on.Converting Objects to Strings
reverseIt
converts the resultingStringBuffer
to aString
and returns the string. You can convert several different data types toString
s usingString
'svalueOf
method.Converting
String
s to NumbersYou can also use methods from theInteger
,Float
,Double
, andLong
classes to convert the contents of aString
to a number.Strings and the Java Compiler
The Java compiler usesString
s andStringBuffer
s behind the scenes to handle literal strings and concatenation.Other Interesting Features
String
andStringBuffer
provide several other useful ways to manipulate string data, including concatenation, comparison, substitution, and conversion to upper and lower case.java.lang.String
andjava.lang.StringBuffer
summarize and list all of the methods and variables supported by these two classes.
Table of Contents |