参考来自:http://blog.csdn.net/jeffleo/article/details/52194433

1.速度

一般来说,三者的速度是:StringBuilder > StringBuffer > String。

但是,在String a = "how" + "old" + "are" + "you"。这种直接拼接的情况下,String速度最高。这是因为jvm的优化问题,jvm会自动识别,把"how" + "old" + "are" + "you"直接当做'how old are you"。

2.String

参看前篇博文:2017.11.15 String详解

3.StringBuilder和StringBuffer

这两者的api实际差不多,StringBuilder是jdk1.5引入的,1.5之前只能使用StringBuffer。翻阅了两者的源码,看出StringBuffer是线程安全的,StringBuilder是非线程安全的。因此多线程使用StringBuilder是会出错的。

4.三者的使用场景

String的使用场景:在字符串不常变化的情况下,例如进行字符串的复制和简单得拼接。
StringBuffer的使用场景:在字符串经常进行运算的,且在多线程的情况下,例如xml解析和StringBuffer参数的拼接。
StringBuilder的使用场景:在字符串经常进行运算的,且在单线程的情况下,例如SQL语句的拼装。

最新文章

  1. 【JAVA】通过HttpClient发送HTTP请求的方法
  2. 微软TechEd2013大会将在北京、上海召开!
  3. thymeleaf中的Literals
  4. JAVA的设计模式之单例设计模式
  5. C#中如何操作2个list
  6. 求新的集合 A=AUB(顺序表)
  7. 意大利奢侈品牌-Kiton 华丽进驻北京新光天地-时尚生活-泛高尔夫网
  8. C语言 - 结构体(struct)比特字段(:) 详细解释
  9. Go语言环境安装&搭建(Linux)
  10. leetcode题解 3. Longest Substring Without Repeating Characters
  11. Delphi使用逍遥安卓模拟器
  12. 【转】URL编码(encodeURIComponent和decodeURIComponent)
  13. 017_mac格式化硬盘,mac如何格式化硬盘
  14. vue-particles粒子动画效果
  15. SpringBoot中关于@Enable***的注解详解
  16. ALGO-6_蓝桥杯_算法训练_安慰奶牛
  17. 抱SQL SERVER大腿之我爱用视图(对大数据量的管理)
  18. Debian 版本历史
  19. [k8s]如何处理dockerfile无expose情况下在k8s里暴漏访问
  20. Struts2中的包的作用描述

热门文章

  1. [ Openstack ] OpenStack-Mitaka 高可用之 镜像服务(glance)
  2. python模拟鼠标和键盘操作
  3. HBuilder开发移动App——manifest.json文件解析
  4. laravel将数据库对象转为数组的方法
  5. 【转.解析清晰】你真明白 Python 装饰器么?
  6. HDU 2988.Dark roads-最小生成树(Kruskal)
  7. hdu6231
  8. POJ1330 Nearest Common Ancestors(最近公共祖先)(tarjin)
  9. ASP.NET Core 2.2 基础知识(六) 配置(内含MySql+EF)
  10. c++ primer敲代码第二章