> Joshua Cranmer's point would apply here, then - in order to get the benefit of
> StringBuilder you'd have to rewrite the class that uses StringBuffer.
No. The same sorce code will generate different bytecode. For example:
public class A {
String s(String s1, String s2) {
return s1 + s2;
}
}
Comiled with 1.6:
0: new <java.lang.StringBuilder> (2)
3: dup
4: invokespecial java.lang.StringBuilder.<init> ()V (3)
7: aload_1
8: invokevirtual java.lang.StringBuilder.append (Ljava/lang/
String

Ljava/lang/StringBuilder; (4)
11: aload_2
12: invokevirtual java.lang.StringBuilder.append (Ljava/lang/
String

Ljava/lang/StringBuilder; (4)
15: invokevirtual java.lang.StringBuilder.toString ()Ljava/lang/
String; (5)
18: areturn
And compiled with 1.3:
0: new <java.lang.StringBuffer> (2)
3: dup
4: invokespecial java.lang.StringBuffer.<init> ()V (3)
7: aload_1
8: invokevirtual java.lang.StringBuffer.append (Ljava/lang/
String

Ljava/lang/StringBuffer; (4)
11: aload_2
12: invokevirtual java.lang.StringBuffer.append (Ljava/lang/
String

Ljava/lang/StringBuffer; (4)
15: invokevirtual java.lang.StringBuffer.toString ()Ljava/lang/
String; (5)
18: areturn