1.下面简单的几行程序:
String c="ccc";
        for (int i = 0; i < times; i++) {
            c+="ccc";
        }
请问分别当times=10000和times=50000的时候,后者的执行时间刚好是前者的5倍左右,还是小于5倍或远大于5倍?简述原因
如果你的答案不是整好5倍,请改造以上程序,要求实现同样的字符串加和功能,但是执行的时间与times大小之比需呈线性关系,而不是指数关系

解决方案 »

  1.   

    字符串的拼接就没有这样做的。用StringBuilder
      

  2.   

    这题估计是这样的 
    1 远大于5倍
    2 用StringBuffer之类的代替String
      

  3.   

    用StringBuffer 或StringBuilder似乎不能达到楼主的要求。
      

  4.   

    String c="ccc";
    StringBuffer sb= new StringBuffer();
    for (int i = 0; i < 5000; i++)
    {
        sb.append(c);
    }
    这是我自己刚改的
      

  5.   

    你可以试验一下嘛,肯定是远大于5倍。
    大量字符串拼接用Stringbuffer,可以达到你的性能要求
      

  6.   

    换了StringBuffer性能的提升简直难以想象
    我把次数放大了20倍才看得出来
    import java.util.Date;public class Test {
    public static void main(String[] args) {
    int times = 200000;
    long l1=new Date().getTime();
    StringBuffer c = new StringBuffer("ccc");
    for (int i = 0; i < times; i++) {
    c.append("ccc");
    }
    long l2=new Date().getTime();
    System.out.println(l2-l1);
    times=1000000;
    for (int i = 0; i < times; i++) {
    c.append("ccc");
    }
    long l3=new Date().getTime();
    System.out.println(l3-l2);
    }
    }结果是
    31
    156
      

  7.   

    是这样    一般用的时候都是用StringBuffer    
      

  8.   


    String 用的是字符串对象池,每次要重新构造,不能重新利用,所以效率很低很低很低........
      

  9.   

    原因简单说就是String是不可变的 连接的时候只能新new对象 而其他的StringBuffer什么的不是不可变的 连接的时候在原有对象上修改就行了 
      

  10.   

    String c="ccc"; 
            for (int i = 0; c.length < times; i++) { 
                c+=c; 
            }这样来怎么样,c也指数级的增加,最后再调整一下. 
      

  11.   

    String c="ccc"; 
            for (int i = 0; c.length() < times; i++) { 
                c+=c; 
            } 这样来怎么样,c也指数级的增加,最后再调整一下. 
      

  12.   


    public class abc{
    public static void main(String[] args){
    String a = "abc";
    String b = "ab";
    String c = b+"c";
    System.out.println(a==c);
    }
    }
    楼主可以看一下这个程序,它的结果是false,而不是true.
    它可以很好的说明你的哪个程序是的时间倍数大于5,
      

  13.   

    我测试后times=10000;用时1248791460795;
    times=50000;用时1248791301233 两个用时几乎相同,之后改成StringBuffer以后才有5倍的差距为什么这样?????????????????????
      

  14.   

    总结前面的答案:
    (1)由于要不停的在字符池里构造新的对象,所以远远大于5倍
    (2)改成StringBuffer以后,相差几乎5倍