i prefer stringbuffer, but how much the performance improved, i can't measure.

解决方案 »

  1.   

    long startTime, endTime1, endTime2;
    StringBuffer buf;
    String  str;startTime = System.currentTimeMillis();
    for( long i = 0; i < 1000000; i ++ ) {
        buf=new StringBuffer();
        buf.append("**");
    }
    endTime1 = System.currentTimeMillis() - startTime;
    startTime = System.currentTimeMillis();
    for( long i = 0; i < 1000000; i ++ ) {
        str="";
        str=str+"**";//or str += "**";
    }
    endTime2 = System.currentTimeMillis() - startTime;javax.swing.JOptionPane.showMessageDialog( null, 
    "use Buffer time = " + new Long( endTime1 ).toString() + " 毫秒" + 
    "use String time = " + new Long( endTime1 ).toString() + " 毫秒" );
     
    不行的话再改循环次数,这个测试的是时间使用,没测内存的使用,那个俺可不会
      

  2.   

    StringBuffer!
    可以测试一下:
    StringBuffer lsb = new StringBuffer();
    for(int i=0;i=1024*60;i++)
    {
        lsb.append("1");
        //此处或者使用string +
    }
    看等待时间你就知道了。
      

  3.   

    String 每次都要new一个新的实例StringBuffer如果append后的长度不大于它目前的数组长度就直接写进去;如果append后的长度大于它目前的数组长度就new一个(现在长度+1)*2的数组(长度不能大于Integer.MAX_VALUE),在把字符串写进去。知道怎么实现的了,什么情况下哪种效率高吧
      

  4.   

    还用说,当然是StringBuffer,
    String类是在StringBuffer类上包装了一下以求更好的易用性.
      

  5.   

    java中StringBuffer与String在处理字符串时在效率上有很大的差异,尤其是当字符串很时!
      字符串对象(String对象)的直是不可改变的,一旦创建了String类对象,就不能在改变其直,引起字符串的属性和长度改变的操作,将会得到一个复制了原对象中所需部分的新String对象(java实现努力试图将同一个类中的同样的字符串和字符的直合并到一个共享的字符串池中)。
        StringBuffer类是一个为字符提供的可增大的缓冲区,他向缓冲区附加各种类型的数据,提供了大量的Append()方法的重载。
    例如以下例子:
      String testStr = "hello";
      testStr = testStr + " world";
      testStr = testStr + " how are you";
    这里用String会反复产生新的String对象,字符数组必须反复复制,着对性能回产生负面影响。若使用StringBuffer类则为更好:
      StringBuffer testStrBuff = new testStrBuff("hello");
      testStrBuff.append(" world");
      testStrBuff.append(" how are you");
    楼主有一个比较多,长的字符串,应该是用StringBuffer来操作,建议可以把这个字符串接成几个字符串来处理,调用append方法类追加,这样将比使用String类有非常大的效率提升!!
      

  6.   

    同意OExpress(浪子猫),
    String是不可变的,
    每次这样的操作会产生很多的String,
    以前做过测试,
    大量的字符串拼接操作,
    由String改为StringBuffer后,
    由3分钟缩短为2分钟。