| The String and StringBuffer Classes

## Why Two String Classes?

> >     class 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();
> >         }
> >     }

> The Java development environment provides two classes that store and manipulate character data: String, for constant strings, and StringBuffer, for strings that can change.

> You use Strings when you don't want the value of the string to change. For example, if you write a method that requires string data and the method is not going to modify the string in any way, you would use a String object. Typically, you'll want to use Strings to pass character data into methods and return character data from methods The `reverseIt()` method takes a String argument and returns a String value.

> The StringBuffer class provides for non-constant strings; you use StringBuffers when you know that the value of the character data will change. You typically use StringBuffers for constructing character data like in the `reverseIt()` method.

> Because they are constants, Strings are typically cheaper than StringBuffers and they can be shared. So it's important to use Strings when they're appropriate.

| The String and StringBuffer Classes