文字列に関して忘れてならない最重要事項は、ループで文字を処理するときには、String や StringBuffer クラスではなく必ず char 配列を使用することです。配列要素へアクセスする方が、charAt() メソッドを使用して文字列内の文字にアクセスするよりもはるかに高速です。また、文字列定数 ("...") はすでに文字列オブジェクトであることを忘れないでください。
//DON'T
String s = new String("hello");
//DO
String s = "hello";
String クラス
ループ内の可変文字列や文字処理、charAt() メソッドで String クラスを使用しないでください。
StringBuffer クラス
StringBuffer クラスは、文字列が可変で、複数のスレッドによって並列にアクセスされ、文字処理が行われない場合にのみ使用してください。ループ内の非可変の文字列や文字処理、charAt() メソッド、setCharAt() メソッドには使用しないでください。デフォルトの文字列サイズは 16 文字です。このクラスは、文字列を連結するときにコンパイラによって自動的に使用されます。最大の文字列サイズがわかっている場合は、初期バッファーサイズとしてそのサイズを設定してください。
StringTokenizer クラス
StringTokenizer クラスは、簡単な解析や読み取り走査に役立ちますが、非常に非効率的です。このクラスは、String ではなく文字配列に文字列や区切り文字を格納するか、最上位の区切り文字を格納して、より短時間に検査が行われるようにすることによって最適化できます。区切り文字リストや処理文字列によって異なりますが、このような最適化によって、1.6 倍から 10 倍 (通常は 2.4 倍程度) にパフォーマンスが向上します。