Java实习面试笔记:String, StringBuilder, StringBuffer的异同

一、String

String是不可变类

String str = "Hello, ";
str = str + "world!";

上述代码需要三次开辟内存空间,对内存来说,是一个极大的浪费。

二、StringBuilder和StringBuffer

StringBuffer和StringBuilder则是为了应对经常性的字符串操作而产生的。

StringBuffer和StringBuilder的对象都能被多次修改,期间不产生新的未使用的对象。而StringBuilder和StringBuffer的区别在于StringBuilder不是线程安全的,在访问上StringBuilder相较于StringBuffer有速度上的优势。

StringBuffer有一定缓冲区容量,当字符串大小没有超过缓冲区容量时不会分配新的容量,当字符串大小超过容量时会自动增加容量。

三、主要的区别

  • String是不可变字符串,初始化可null
  • StringBuffer是可变字符串,效率低,线程安全,初始化可null
  • StringBuilder是可变字符串,效率高,线程不安全,初始化不能null

参考

图析:String,StringBuffer与StringBuilder的区别

如有侵权烦请联系,我会将内容删除!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.