实际开发中,我们编写不同的代码,即使是同一个意思,但是往往效率是不一样的。
一、第一种代码书写方式
@Test
public void test6(){
long start = System.currentTimeMillis();
method2(100000);//7
long end = System.currentTimeMillis();
System.out.println("花费的时间为:" + (end - start));
}
public void method2(int highLevel){
//只需要创建一个StringBuilder
StringBuilder src = new StringBuilder();
for (int i = 0; i < highLevel; i++) {
src.append("a");
}
// System.out.println(src);
}
二、第二种代码书写方式
@Test
public void test6(){
long start = System.currentTimeMillis();
method1(100000);//4014
long end = System.currentTimeMillis();
System.out.println("花费的时间为:" + (end - start));
}
public void method1(int highLevel){
String src = "";
for(int i = 0;i < highLevel;i++){
src = src + "a";//每次循环都会创建一个StringBuilder、String
}
// System.out.println(src);
}
最终比较二者的执行时间,前者是4400 后者是47,差别也太大了!
1、后者只创建一个对象,然后做拼接,前者不同的创建StringBuilder 最后还.toString
2、前者创建了太多的对象,在堆中,gc需要不停的回收,也是影响效率的
版权声明:本文为wumingdu1234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。