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),所以效率低!
posted @ 2020-05-03 17:20  扎猹少年  阅读(214)  评论(0编辑  收藏  举报