Java学习之String,StringBuffer,StringBuilder三者之间的共同点与区别及使用场景
一、共同点
String,StringBuffer,StringBuilder
都是用于表示字符序列的类 。
二、区别
1.String
是常量的;它们的值在创建后无法更改。字符串缓冲区支持可变字符串。因为字符串对象是不可变的,所以它们可以共享。
2.StringBuffer
是线程安全、可变的字符序列。字符串缓冲区类似于String
,但可以修改。在任何时候,它都包含一些特定的字符序列,但序列的长度和内容可以通过某些方法调用进行更改。
3.StringBuilder
可变字符序列。此类提供了一个与StringBuffer
兼容的API,但不保证同步。此类旨在用于单个线程使用字符串缓冲区的地方(通常情况下)用作StringBuffer
的下拉式替换。在可能的情况下,建议优先使用此类,而不是StringBuffer
,因为在大多数实现下,它将更快。
StringBuilder
的实例对多个线程使用不安全。
三、使用场景
效率高低:StringBuilder > StingBuffer > String
当多个线程使用字符串缓冲区时,使用StringBuffer保证正确的操作(考虑安全性问题)
如果是单线程的,建议使用StringBuiler效率更高一些。