The three classes are as different as chalk and cheese.
Don't use StringBuffer; it has a significant performance overhead over StringBuilder and the synchronisation can be replaced by locking if required.
Lots more in
the Java™ Tutorials. If you want text, use String; it is immutable and thread-safe and doesn't require cloning or defensive copying, so you can use the same String object in different places.
If you need to change the contents of the text, use StringBuilder and get the contents out with its toString() method.
Beware: StringBuilder hasn't got an overridden equals() method, so if you want to see whether two StringBuilders have the same contents try
builder1.toString().equals(builder2.toString())