String-StringBuilder-StringBuffer 的区别

Posted fengyongzhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String-StringBuilder-StringBuffer 的区别相关的知识,希望对你有一定的参考价值。

String StringBuilder StringBuffer 的区别

  • String:不可改变的字符串,不能够被修改

 

          技术图片

 

        (https://baijiahao.baidu.com/s?id=1636970438936163189&wfr=spider&for=pc

          技术图片

  1. 创建一个全局变量 str = "123",此时是在堆内存中开辟了空间
  2. 然后我们“想要的是”让“456” 替换 “123”,但是String 是在堆内存中又为“456”开辟了空间,并重新指向“456”
  3. 所以“123”这个并没有被改变,只是指向变了
  4. 建议少量操作字符串时,使用String,大量操作极大消耗内存!
  1. 线程不安全,建议单线程使用
  2. 效率高,修改比StringBuffer快
  3. new StringBuilder(); 构造一个字符串生成器,其中没有字符,初始容量为16个字符(Constructs a string builder with no characters in it and aninitial capacity of 16 characters)
  1. append 是用 synchronized 修饰的,所以是线程安全的
  2. 主要因为StringBuffer很多方法都是synchronized 修饰的(https://blog.csdn.net/exodus520/article/details/90415568),所以效率低!

以上是关于String-StringBuilder-StringBuffer 的区别的主要内容,如果未能解决你的问题,请参考以下文章