很多地方都讲,在做字符串拼接的时候StringBuilder比string快,并且快得多。

事实是,StringBuilder比string快的原因是string拼接时产生了中间对象,最终是垃圾。
如:
string str = "a";
str += "b";
str += "c";
那么,最终结果是"abc",但第二行产生了"ab"只是一个中间对象,是个垃圾。用StringBuilder会避免这种中间对象的产生。

那如果我这么写呢?
string str = "a"
    + "b"
    + "c";

这会比StringBuilder慢吗?绝对不会!
且不说这种常量的字符串拼接会在编译时就进行处理,就算"b"和"c"这里不是常量是变量,那么编译结果也是string.concat(...),不会产生中间对象。

当然,这样把多个语句变成了一个语句,有个缺点就是调试的时候没那么方便。

不是所有时候都可以方便的转换成连加,比如遇到if、while等语句块时。

用StringBuilder的目的是为了不产生中间变量,但如果这么用:
stringbuilder.Append("a"+str1+"b"),就还是产生了中间变量:"a"+str1+"b",应该改成
stringbuilder.Append("a").Append(str1).Append("b"),性能会更好,但可读性就差点了。

我的结论:可以转换成一句string连加的StringBuilder操作,用连加更好。但尽量减少+=。

转载于:https://www.cnblogs.com/zhucai/archive/2009/10/16/string_stringbuilder.html

string和StringBuilder的选择相关推荐

  1. 一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

    1 碎碎念  这是一道老生常谈的问题了,字符串是不仅是 Java 中非常重要的一个对象,它在其他语言中也存在.比如 C++.Visual Basic.C# 等.字符串使用 String 来表示,字符串 ...

  2. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  3. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  4. 探秘Java中String、StringBuilder以及StringBuffer

    相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它 ...

  5. 探秘Java中的String、StringBuilder以及StringBuffer

    转载:http://www.cnblogs.com/dolphin0520/p/3778589.html 一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String ...

  6. 你必须搞清楚的String,StringBuilder,StringBuffer

    String,StringBuilder 以及 StringBuffer 这三个类的关系与区别一直是 Java 的经典问题,这次就来讲一下关于这三个类的一些知识 一. 简单对比 String : 字符 ...

  7. 【转】探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...

  8. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  9. String 和stringBuilder的区别

    string和stringbuilder对象都可以很方便的处理字符串: string是引用类型,在堆上分配内存.string对象一旦创建变不能再改变.在用算时会产生一个新的实例. Stringbuil ...

最新文章

  1. 华为服务器面板显示,服务器面板怎么查看
  2. XML文档类型定义DTD
  3. 飞思卡尔智能车iar工程常见问题
  4. 加速神经网络收敛的萃取精馏权重法
  5. boost::endian模块实现conversion的测试程序
  6. Java黑皮书课后题第5章:*5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目
  7. 选修课计算机网络技术,2020智慧职教网络选修课计算机网络技术基础答案完整满分章节测试答案...
  8. 消息队列,我只选RabbitMQ!
  9. 在新版CSDN博客添加友情链接
  10. ubuntu14.04中安装open jdk1.8以及报错解决分析
  11. 2、Zookeeper集群搭建、命令行Client操作
  12. 数字的格式化c语言课程设计,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  13. 【随笔】hi3531D 音频
  14. 共轭梯度法python实现
  15. 软件集成测试分析,软件集成测试报告模板
  16. 装机之必备软件下载合集
  17. javascript基础常识问答(二)
  18. java实现图片文件上传下载_java实现文件的上传和下载
  19. sublime text 添加到鼠标右键功能
  20. 小学生灯谜计算机,小学生谜语大全

热门文章

  1. uc点网页显示服务器升级,让uc浏览器网页加载速度提升100%
  2. nginx配置及操作简要记录
  3. 并查集图冲突hdu1272
  4. 配置 Oracle 11gR2 在 CentOS6 上开机自启动
  5. 图片轮播插件-carouFredSel
  6. 2010年被逼出来的10个中国IT产品
  7. JavaNIO编程基础-图解JavaNIO内存模型
  8. labeme批量转换json文件_Python实现markdown文件批量转换为word
  9. oracle 数据的定义,oracle——数据定义
  10. php 快速排序函数,PHP实现快速排序算法的三种方法