String,StringBuffer和StringBuilder分别应该在什么情况下使用?
String 是Java的字符串类,其实质上也是用Char类型存储的,但是除了hash属性,其他的属性都声明为了final类型.

因为其这样操作产生的不变性,带来了如下优点:

  1. 因为经常利用String存储的数据去做hash运算,将其设置为final则可以使hash值不变.

  2. 牵扯到享元的基础, 如果不设置为final类型的话,享元机制就无法使用.

  3. String参数的不变性,天生带来线程安全, 可以在多个线程中安全的使用,而不用去加线程锁.


但是因为上述的方便只能牺牲一些东西,但是作为成年人一定要选择我都要,然后就产生了StringBuffer和StringBuilder.

StringBuffer和StringBuilder的产生使为了解决大量拼接字符串时产生很多中间对象的问题,而提供的个类.

但是为什么要有两个呢 ?

依然使线程问题,stringBuffer加了线程锁,在多线程的情况下可以安全使用,而只有单线程的情况下我们使用 StringBuilder,它没有线程锁所以性能更高.

最新文章

  1. php分页原理
  2. 两个Service之间相互监视的实现
  3. tail 命令 查看Tomcat目录下日志的最后几行的方法
  4. 逆序数还原(FZU)
  5. ZOJ Problem Set - 3640 Help Me Escape
  6. ASCII码排序(未完)
  7. MYSQL数据库备份与恢复【转】
  8. hadoop namenode多次格式化后,导致datanode启动不了
  9. C 语言 输入字符串 并计算输入的字符的长度
  10. http://www.cnblogs.com/gaojing/archive/2011/08/23/2413616.html
  11. 由于losf引起的pxc启动报错处理
  12. 【转】.NET IL实现对象深拷贝
  13. hue集成hbase出现TSocket read 0 bytes
  14. Grafana短信报警实现
  15. ubuntu下VS code如何调试C++代码
  16. spring boot(十一)MongoDB的使用
  17. 常用vimrc记录
  18. springside
  19. Android 提示应用“正在发送大量短信”的解决办法
  20. Django之modelform修改数据库

热门文章

  1. Quartz时SLF4J错误
  2. 深入理解SP、LR和PC
  3. java 创建 HMAC 签名
  4. laravel基础课程---4、Laravel基础网站结构搭建
  5. spring2.5整合struts2
  6. Go丨语言对MySQL数据库的增、删、改、查操作
  7. win7 jenkins搭建.Net项目自动构建
  8. base64编码方式
  9. ACM学习历程—HDU1584 蜘蛛牌(动态规划 && 状态压缩 || 区间DP)
  10. 人工智能实践:linux 和 python 基础简介