What are string classes available in Java?

In addition to the well-known String class, Java also provides StringBuffer and StringBuilder. The String class is immutable, while these two helper classes implement the Builder pattern and are designed for modifying strings without the overhead of creating new objects for each modification.

All methods in StringBuffer are synchronized. In Java 1.5, StringBuilder was introduced as an unsynchronized alternative, which is similar to the difference between HashMap and Hashtable. Aside from synchronization, the two classes are almost identical in terms of available methods and constructors.

String syntax sugar doesn't work for these builder classes:
  • You can't create a StringBuffer or StringBuilder with a literal; instead, you must use a constructor.
  • You can't concatenate strings using the + operator; instead, you use methods like insert and append.
Although the + operator in constant expressions gets compiled into an interned string, but applied to non-constant expressions, it implicitly uses StringBuilder behind the scenes.
What are string classes available in Java?