• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java 字符串连接的性能问题分析

Java 字符串连接的性能问题分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java 字符串,java字符串转数字,java字符串比较,java 字符串转日期,java字符串数组等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Java中使用+作为字符串连接符,它是把多个字符串合并成一个字符串的方便途径。对于单独一行的输出、或者较小的大小固定对象,使用连接符方便且合适。但是对于大规模的场景,字符串连接符变得有些不合时宜。

以连接N个字符串为列,重复的使用字符串连接符需要N的平方的时间量,最主要的原因是String类是不可变类导致的,即当连接两个字符串时,它们的内容都要存在一次拷贝。每一次连接,原有的两个字符串对象都不变,连接后的结果是一个新生成的对象。这种方式,不仅时间需求很大,而且对内存的要求也非常高。

如果拼接的字符串很多,使用字符串连接符的计算时间和对性能的消耗变得难以估算。为了使性能在接受范围内,可以使用StringBuilder替代String,来连接字符串。

以下是两种方式的测试代码:

<span style="font-size:18px;">public static void main(String[] args) { 
     
    long start1 = System.currentTimeMillis(); 
    String result1 =""; 
    for(int i = 0 ; i < 50000;i++){ 
      result1 += String.valueOf(i); 
    } 
    long end1 = System.currentTimeMillis(); 
    System.out.println("String Connect Time:"+(end1-start1)+"ms"); 
     
    long start2 = System.currentTimeMillis(); 
    StringBuilder result2 = new StringBuilder(); 
    for(int i = 0 ; i < 50000;i++){ 
      result2.append(i); 
    } 
    long end2 = System.currentTimeMillis(); 
    System.out.println("StringBulider Connect Time:"+(end2-start2)+"ms"); 
  }</span> 

</div>

这两中做法的差距非常大,我所做的测试中,第二种做法要比第一种做法高4到5个数量级。随着连接数目的增多,两种方式的性能差距也更加明显。

总结一下:不要使用字符串连接符来连接多个字符串,除非系统对性能无要求。还有一点是,可以使用字符数组,或者每次只处理一个字符串,而不是将他们组合起来。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java常用字符串工具类 字符串智能截取(3)
  • Java实现字符串解析为日期时间的方法示例
  • Java求字符串中出现次数最多的字符串以及出现次数
  • Java实现读取文章中重复出现的中文字符串
  • Java 字符串连接的性能问题分析
  • 通过一个map替换字符串中指定的字符变量方法
  • Java常用字符串工具类 字符串智能截取(3)

相关文章

  • 2017-05-28详解Java 自动装箱与拆箱的实现原理
  • 2017-05-28Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法
  • 2017-05-28java多线程编程技术详解和实例代码
  • 2017-05-28详解springMVC—三种控制器controller
  • 2017-05-28Java通过正则表达式获取字符串中数字的方法示例
  • 2017-05-28浅析java修饰符访问权限(动力节点Java学院整理)
  • 2017-05-28Java集合之HashMap用法详解
  • 2017-05-28java生成缩略图的方法示例
  • 2017-05-28详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用
  • 2017-05-28java图形验证码生成工具类 web页面校验验证码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于SpringBoot与Mybatis实现SpringMVC Web项目
    • Java 中Timer和TimerTask 定时器和定时任务使用的例子
    • Windows下Java环境变量配置详解
    • Java通过PropertyDescriptor反射调用set和get方法
    • springboot集成spring cache缓存示例代码
    • 通过Session案例分析一次性验证码登录
    • 浅谈Java中注解Annotation的定义、使用、解析
    • Java中的内部类
    • 详解Spring+Hiernate整合
    • ssh框架实现文件上传下载实例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有