string是相当于常量,一但创建就不再改变,所有方法会建立新的string对象
而stringbuf则相反.所以如果字符串操作多的话,用stringBuf

解决方案 »

  1.   

    String是不可变字符串,但它与常量有区别,它可以重新赋值,而常量则不能,因此不能从
    此观点考虑,如果为包裹类,同样值不可改变,因此复合数据类型传的是引用也有特殊情况
    愿各位发表自己的观点
      

  2.   

    应该这么理解:它们是单向传递的,不管是stringReplace或者是bufferReplace方法匀不就把改变后的形参带回去。要说明的是为什么后一种能改变呢?那是因为你调用了系统方法append,这个append就是改变原来的实参,所以说并不是因为bufferReplace改变的,而是因为append而改变的
    注:把参数看成普通变量,只不过这个变量是一个对象罢了
      

  3.   

    String对象作为参数传递时和基本的int型等primary类型一样是值传递,而不是引用传递,我试过,刚开始我也不敢相信。
      

  4.   

    public static void bufferReplace(StringBuffer text){ text=text.append("c"); }
    上面这个方法改为:
    public static void bufferReplace(StringBuffer text)
       {
         StringBuffer aa=new StringBuffer("ccc");
         text=aa; 
       } 
    再试试看,然后再看我上面的理解
      

  5.   

    与你做的原题对比看看
    public class csdn402

      public static void stringReplace(String text)
      { 
        text=text.replace('j','l'); 
        System.out.println(text);
       } 
       public static void bufferReplace(StringBuffer text)
       { 
         StringBuffer aa=new StringBuffer("ccc");
         text=aa; 
         System.out.println(text);
        } 
      public static void main(String args[])
      {   
        String textString=new String("java"); 
        StringBuffer textBuffer=new StringBuffer("java"); 
         stringReplace(textString); 
         bufferReplace(textBuffer); 
       System.out.println(textString+textBuffer); 
         } 
    }
      

  6.   

    String专门定义不变字符串,而StingBuffer用来定义可变字符串。
    两者在性能上也有很大的区别:
    String比较适合短的字符串,StingBuffer适合动态增加的字符串。
    在实际使用过程中,要求:String+String这种在BS开发结构中不被提倡,
    对性能影响比较大。而StingBuffer则是比较推荐使用方法。
      

  7.   

    http://expert.csdn.net/Expert/topic/1611/1611155.xml?temp=.7364008看看对你有没有帮助