String,StringBuilder,StringBuffer之间的区别

String 拼接字符串每次都会创建新的对象,速度最慢
StringBuilder 线程不安全,适合在单线程中拼接字符串
StringBuffer 线程安全,适合多线程中使用

我们在代码中测试下使用效率:

/**
     * 用String拼接字符串
     */
    public static void testStringJoint(){

        String strFinal = "abcdefghijklmnopqrstovwxyz";
        String a = "";
        Random rand = new Random();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i <10000; i++){
            int randInt = rand.nextInt(10);
            a +=  strFinal.substring(randInt, randInt + 14);
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime);
    }

    /**
     * 用String拼接字符串
     */
    public static void testStringBuilder(){

        String strFinal = "abcdefghijklmnopqrstovwxyz";
        StringBuilder sb = new StringBuilder();
        Random rand = new Random();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i <10000; i++){
            int randInt = rand.nextInt(13);
            sb.append(strFinal.substring(randInt, randInt + 14));
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime);
    }

返回结果如下:


image.png

循环次数为10000次的时候,用String拼接的时间是923ms,而StringBuilder的时间是1ms,这完全不在一个数量级了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容