1. Strings are immutable. StringBuffer are mutable. 2. Because Strings are not mutable, when you do things like add two strings, Java has to create a new String and copy the contents of the two Strings. If the Strings are short and you're not doing this repeatedly, then normal Strings are fine. If however, the Strings are long and/or you are repeatedly concatenating Strings, then you can take a fairly major performance hit (I'll show an example in class on Wed., but feel free to try it out on your own). 3. The StringBuffer class has a very similar feel to the ArrayList class except instead of storing arbitrary things, it stores an array of characters.