This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
They are for different purposes. A StringBuffer is used when you want to insert/remove/splice/etc characters on the fly, something Strings can't do. A StringBuffer might be loosely thought of as an ArrayList of chars, since it can grow and shrink dynamically. A String can not change its size. HTH!