为什么String字符串拼接的效率要比append操作的效率低?

1、拼接操作与append操作的效率对比

1.1、通过创建对象角度分析

  • StringBuilder的append()的方式:自始至终只创建一个StringBuilder的对象
  • 使用String的字符串拼接方式:创建过多个StringBuilder和String的对象

1.2、通过内存和垃圾回收分析

  • 使用String的字符串拼接方式:内存中由于创建了较多的StringBuilder和String对象,内存占用更大,如果进行GC,需要花费额外的时间。

1.3、改进的空间

  • 在实际开发中,如果基本确定要前前后后添加的字符串长度不高于某个限定值highLevel的情况下,建议使用构造器实例化
  • StringBuilder s=new StringBuilder(highLevel) ;    //new  char[highLevel] 

 

package string;

import org.junit.Test;

public class StringTest5 {


    @Test
    public void test6() {
        long start = System.currentTimeMillis();

        method1(100000);
//        method2(100000);

        long end = System.currentTimeMillis();

        System.out.println("花费的时间为:" + (end - start));
    }

    public void method1(int highLevel) {
        String src = "";
        for (int i = 0; i < highLevel; i++) {
            //822毫秒
            src = src + "a";//每次循环都会创建一个StringBuilder、String


        }
    }

    public void method2(int highLevel) {
        StringBuilder src = new StringBuilder();
        for (int i = 0; i < highLevel; i++) {
            src.append("a");//9毫秒
        }
    }
}
  • 因为每次使用字符串拼接方式,都会创建一个新的StringBuilder对象和一个新的String对象。而使用StringBuilder只需要创建一个对象,然后在该对象上不断追加字符串即可。由于创建对象需要时间,因此使用StringBuilder拼接字符串的速度更快。

你可能感兴趣的:(#,StringTable,java,开发语言,String字符串拼接效率低)