> 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秒