String 对象已经分配就不能修改了,这两个语句:
String str1="it is a string";
  str1=str1+"for you!";
其实也没有改变旧串,而是内部新建了一个str1+"for you!"的串,将其引用赋给了str1。
就是说旧串的内容并没有改变,str1被赋予了新的引用值之后,旧的串将被回收。StringBuffer则是可以直接修改串的内容的。这些从程序表面上不易看出来

解决方案 »

  1.   

    你的那种做法属于对String的重新赋值。
    同样的操作用StringBuffer 可以这样实现:
    StringBuffer str1=new StringBuffer(new String(new char[50]));
    str1.replace(0,14,"it is a string");
    str1.replace(14,22,"for you!");
    这样StringBuffer str1与你的做法得到的字符串相同。
    比较一下,两者的改变是不同的,一个是重新赋值,一个才是改变。
      

  2.   

    正如zh9625(短笛)所说, String 对象已经分配就不能修改.
    StringBuffer是String的wrapper类,
    StringBuffer可调用append方法来修改。StringBuffer str1=new StringBuffer("it is a StringBuffer");
    str1.append("for you!");
      

  3.   

    String 是常量。
    StringBuffer 可以当作一个动态的 String 工具类。