日期:2014-05-20  浏览次数:20864 次

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


------解决方案--------------------
换了StringBuffer性能的提升简直难以想象
我把次数放大了20倍才看得出来
Java code
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);
    }
}