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

本文比较了StringBuilder的append操作与String的字符串拼接在效率上的差异,指出String拼接会频繁创建对象导致内存占用大和GC开销,推荐在预知大量追加时使用StringBuilder的构造器初始化来提高性能。
摘要由CSDN通过智能技术生成

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拼接字符串的速度更快。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值