>  2009/04/27 (月) 04:32:16        [qwerty]
> > public class test {
> > 	public static void main(String[] args) {
> > 		StringBuffer sb1 = new StringBuffer("aaa");
> > 		StringBuffer sb2 = new StringBuffer("bbb");
> > 		StringBuffer sb3 = new StringBuffer();
> > 		StringBuffer sb4 = new StringBuffer();
> > 		sb4=sb1;
> > 		System.out.print("---stringchange実行前---" + "\n");
> > 		System.out.print("sb1:" + sb1 + "\n"); 
> > 		System.out.print("sb2:" + sb2 + "\n"); 
> > 		System.out.print("sb3:" + sb3 + "\n"); 
> > 		System.out.print("sb4:" + sb4 + "\n");
> > 		System.out.print("\n");
> > 		stringchange(sb1);
> > 		sb4=sb1;
> > 		System.out.print("---stringchange実行後---" + "\n");
> > 		System.out.print("sb1:" + sb1 + "\n"); 
> > 		System.out.print("sb2:" + sb2 + "\n"); 
> > 		System.out.print("sb3:" + sb3 + "\n"); 
> > 		System.out.print("sb4:" + sb4 + "\n");
> > 		
> > 	}
> > 	static void stringchange(StringBuffer sbchange) {
> > 		sbchange.append("xxx");
> > 	}
> > }
> > <実行結果>
> > ---stringchange実行前---
> > sb1:aaa
> > sb2:bbb
> > sb3:
> > sb4:aaa
> > ---stringchange実行後---
> > sb1:aaaxxx
> > sb2:bbb
> > sb3:
> > sb4:aaaxxx
> どうしても書き換えたいなら
> 元の文字列をreplaceするといいよ(;´Д`)内部の変更だから上手くいくはず
> sbchange.replace( sbchange ,"xxx");
> な感じかな?

replaceは置換した文字列の新しいStringオブジェクトを返す仕様だよ(;´Д`)
Stringオブジェクトは完全に不変オブジェクトだよ
new後に値を変えられない

参考:2009/04/27(月)04時30分09秒