字符串拼接和转换的良好习惯

来源:互联网 发布:红包破解软件 编辑:程序博客网 时间:2024/05/16 08:15

最近做代码review的时候,发现很多开发的同事们为了图省事,当有遍历String集合,做字符串拼接的时候,用+号直接拼接。于是好奇做了一个优化测试:

public static void testBuild(){    long lparam = 1000l;    long start = System.currentTimeMillis();    StringBuilder stb = new StringBuilder();    for(int i=0;i<10000;i++){        stb.append(lparam);    }    String stbstr = stb.toString();    long end = System.currentTimeMillis()-start;    long start2 = System.currentTimeMillis();    String str = "";    for(int i=0;i<10000;i++){        str += Long.toString(lparam);    }    long end2 = System.currentTimeMillis()-start2;        log.error("友好的方式StringBuilder耗时:{},不友好用法+耗时:{}",end,end2);}

测试共执行五次,连续调用五次testBuild()方法。得出结论如下:

15:06:09.629 [main] ERROR TestC - 友好的方式StringBuilder耗时:4,不友好用法+耗时:1124

15:06:11.332 [main] ERROR TestC - 友好的方式StringBuilder耗时:0,不友好用法+耗时:1687
15:06:12.243 [main] ERROR TestC - 友好的方式StringBuilder耗时:2,不友好用法+耗时:908
15:06:12.911 [main] ERROR TestC - 友好的方式StringBuilder耗时:1,不友好用法+耗时:665

15:06:13.481 [main] ERROR TestC - 友好的方式StringBuilder耗时:1,不友好用法+耗时:569

相信这个结果还是很出人意料的,我事先以为肯定是有区别的,但没想到会有这么大差距。


下面我们再来看一组,字符串转换,Class<T>.toString(Class<T> param)和""+param;之间的差距。备注:param是任意基本类型数据,且都有对应包装类Class<T>可以支持*.toString(param)方法,下面一起看两种使用方式之间的区别:

public static void testStringPJ(){    long lparam = 1000l;    long start = System.currentTimeMillis();    for(int i=0;i<1000000;i++){        String mid = ""+lparam;    }    long end = System.currentTimeMillis()-start;    long start2 = System.currentTimeMillis();    for(int i=0;i<1000000;i++){        String mid = Long.toString(lparam);    }    long end2 = System.currentTimeMillis()-start2;    log.error("不友好的方式耗时:{},友好用法耗时:{}",end,end2);}

测试共执行五次, 得出结论如下:

15:20:08.177 [main] ERROR TestC - 不友好的方式耗时:122,友好用法耗时:61

        15:20:22.951 [main] ERROR TestC - 不友好的方式耗时:100,友好用法耗时:49

        15:20:34.148 [main] ERROR TestC - 不友好的方式耗时:101,友好用法耗时:45

15:20:57.075 [main] ERROR TestC - 不友好的方式耗时:119,友好用法耗时:52

15:21:09.912 [main] ERROR TestC - 不友好的方式耗时:107,友好用法耗时:85

15:21:21.631 [main] ERROR TestC - 不友好的方式耗时:134,友好用法耗时:56


0 0
原创粉丝点击