 <p><code>StringBuffer</code> - introduced in JDK 1.0 - is thread safe (all of its methods are <code>synchronized</code>), while <code>StringBuilder</code> - since JDK 1.5 - is not. Thus it is recommended to use the latter under normal circumstances.</p> <p><code>StringTokenizer</code> is meant for a whole different purpose then the former two: cutting strings into pieces, rather than assembling. As @Henning noted, it is also "retired" since JDK 1.5 - it is recommended to use <code>String.split</code> instead.</p>