之前一篇里写过字符串常用类的三种方式《java中的字符串相关知识整理》,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简单的测试吧:

public static void main(String[] args) {testStringJoin();}static void testStringJoin() {long beg = System.currentTimeMillis();String s = null;for (int i = 0; i < 100000; i++) {s += "ss";}System.out.println("使用+拼接耗时:" + (System.currentTimeMillis() - beg));beg = System.currentTimeMillis();StringBuffer sb = new StringBuffer();for (int i = 0; i < 100000; i++) {sb.append("ss");}System.out.println("使用StringBuffer拼接耗时:" + (System.currentTimeMillis() - beg));beg = System.currentTimeMillis();StringBuilder sbuilder = new StringBuilder();for (int i = 0; i < 100000; i++) {sbuilder.append("ss");}System.out.println("使用StringBuilder拼接耗时:" + (System.currentTimeMillis() - beg));}

代码非常简单,分别用三种方式拼接字符串10万次,然后计算耗时情况,跑下来还是蛮惊人的:

使用+拼接耗时:9102
使用StringBuffer拼接耗时:3
使用StringBuilder拼接耗时:2使用+拼接耗时:8956
使用StringBuffer拼接耗时:5
使用StringBuilder拼接耗时:3

两组跑来的数据,大的数据相差不大,而且表现的结果也是一致的。这里可以看到使用+这种常量拼接对性能消耗极大,10万次用时9000ms,而StringBuffer和StringBuilder只用了不到5ms。看来一个简单的字符串拼接还是要重视的,之前没想到会有这么夸张的体现。

至于StringBuffer和StringBuilder来说差别不是特别大,更多的还是考虑线程安全就可以了,也就是说用StringBuffer是种比较保险的方式吧,除非对性能有极高的要求。

转载于:https://www.cnblogs.com/5207/p/5923119.html

测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率相关推荐

  1. 清空StringBuilder的三种方法及效率

    清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...

  2. Java中三种字符串的拼接(++ , String.format , StringBuilder.append)

    在Java中 , 对字符串内容的拼接是比较常见的操作 , 通常有三种方式 . 用String类重载'+'运算符进行拼接本质上是调用StringBuilder.append . 用类似C的printf风 ...

  3. 用python画四叶草代码-python—字符串拼接三种方法

    1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字符串才能够进行相加的,这点一定要记住, ...

  4. python字符串拼接变量_python—字符串拼接三种方法

    1.使用加号(+)号进行拼接 字符串拼接直接进行相加就可以,比较容易理解,但是一定要记得,变量直接相加,不是变量就要用引号引起来,不然会出错,另外数字是要转换为字符串才能够进行相加的,这点一定要记住, ...

  5. python拼接字符串的方法_python—字符串拼接三种方法

    mysql‘事件计划已关闭.事件只能在服务器启动并开启事件计划时才能处理.&#39;的警告 通过下列语句查询event是否开启 show variables like '%sche%'; 通过 ...

  6. javascript测试三种字符串替换方式效率

    //第一种  直接正则表达式替换一次 function replaceTrim1(source){ return source.replace(/^\s|\s$/g,""); } ...

  7. 1-13 StringBuffer和StringBuilder和常用类

    正则表达式 正则表达式是一个特殊字符串,通过这个字符串可以对其他字符串进行验证,正则表达式可以做到约束和验证的目的 使用场景:注册页面[长度,匹配要求,限制字符],邮箱,手机号等等[JS] 演示正则使 ...

  8. String、StringBuffer、StringBuilder的理解

    问题: 理解 Java的字符串,String.StringBuffer.StringBuilder 有什么区别? 知识点 字符串设计和实现考量 String是Immutable(线程安全.字符串常量池 ...

  9. [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类

    引言 字符串就是一连串的字符序列,Java提供了String.StringBuffer和StringBuilder三个类来封装对字符串,并提供了系列方法来操作字符串对象. String类是不可变类的: ...

最新文章

  1. 图论 ---- dijkstra变种dp Codeforces Div2 703 E. Paired Payment
  2. HDU_Virtual Friends (并查集)
  3. mysql获取多层嵌套json_使用两个mySQL查询来创建嵌套的JSON数组
  4. linux中看挂载的磁盘用什么命令,使用Linux命令行挂载硬盘和分区 | MOS86
  5. ECMAScript arguments 对象(摘自W3C)
  6. java输入行数打印菱形_JAVA题,输入行数,输入列数,输出一个菱形
  7. 或许是单选的飞鸽传书
  8. python select
  9. java提高篇(十三)-----字符串
  10. xshell左侧导航栏_Axure教程:(初级)导航中的页面切换
  11. c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
  12. 国美金融贷款Kube-apiserver源码分析(国美金融贷款)
  13. 跪求C-MAPSS下载
  14. 如何在vue中使用Cesium加载shp文件、wms服务、WMTS服务
  15. Linux第六章课后题
  16. python列表del_python删除列表元素的三种方法(remove,pop,del)
  17. Unity3D坦克大战(附代码和原理讲解)
  18. CCRC认证是什么,ISCCC与CCRC是什么关系?
  19. Somatic selection distinguishes oncogenes and tumor suppressor genes
  20. Ericsson open-sources OpenWebRTC and Bowser for iOS; Intel releases IoT developer kit

热门文章

  1. 10w 行级别数据的 Excel 导入优化记录
  2. 为什么国内流行的 MyBatis ,国外 Java 工程师却不愿意使用?
  3. 理解 IntelliJ IDEA 的项目配置和Web部署
  4. 麻省理工开放官方课程项目!
  5. 清华南开出品最新视觉注意力机制Attention综述
  6. CVPR 2020 | 用机器学习打造计数君,谷歌RepNet可自动计数视频重复片段
  7. 几篇较新的计算机视觉Self-Attention
  8. 即将 50 岁的雷军,重新回到手机战场
  9. Nginx源码分析:epoll事件处理模块概述
  10. Vue单文件组件环境配置