【 java 常用类】String、StringBuffer、StringBuilder三者之间的效率对比

发布于:2022-11-15 ⋅ 阅读:(387) ⋅ 点赞:(0)

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:java 小白到高手的蜕变🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

前言

上一节我们对String、StringBuffer、StringBuilder三者的异同写了总结,并且从StringBuffer的源码入手进行了分析以及其底层的数组扩容机制,本文将写代码验证三者的效率对比!

String、StringBuffer和StringBuilder三者的异同?

  • String :不可变的字符序列;底层使用 byte[] 存储。
  • StringBuffer :可变的字符序列;线程安全的,效率低;底层使用 byte[] 存储。
  • StringBuilder :可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用 byte[] 存储。

从这个总结不难看出,效率从高到底依次是:StringBuilder>StringBuffer>String

那么么接下来写代码验证一下!

从代码角度验证三者的效率对比

public class Test {
    public static void main(String[] args) {
        long startTime;
        long endTime;
        String str1 = "";
        StringBuffer str2 = new StringBuffer("");
        StringBuilder str3 = new StringBuilder("");
        //1.拼接str1,计算String所耗时间
        startTime = System.currentTimeMillis();
        for(int i= 1;i<=10000;i++){
            str1 += i;
        }
        endTime = System.currentTimeMillis();
        System.out.println("String所耗时间为:" + (endTime-startTime) + "毫秒");

        //2.拼接str2,计算StringBuffer所耗时间
        startTime = System.currentTimeMillis();
        for(int i= 1;i<=10000;i++){
            str2.append(i);
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer所耗时间为:" + (endTime-startTime) + "毫秒");

        //3.拼接str3,计算StringBuilder所耗时间
        startTime = System.currentTimeMillis();
        for(int i= 1;i<=10000;i++){
            str3.append(i);
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder所耗时间为:" + (endTime-startTime) + "毫秒");
    }
}

在这里插入图片描述

很明显,我们拼接一万次字符串操作就可以对比出三者的效率:
StringBuilder>StringBuffer>String

结语

这是我第二次进行这种实验,第一次是javascript中动态创建元素的几种效率对比,对于这种问题,实践一下还是比较有趣的!

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到