Interview ➣ ➣String StringBuffer 和 StringBuilder 的区别
程序员文章站
2022-06-19 08:53:32
...
String StringBuffer 和 StringBuilder 的区别
String是只读字符串,所引用的字符串不能被改变,一经定义,无法再增删改。
String 定义的字符串保存在常量池里面,进行+操作时不能直接在原有基础上拼接。
每次+操作 : 隐式在堆上new了一个跟原字符串相同的StringBuilder对象,再调用append方法 拼接+后面的字符。
区别:
-
String是只读字符串,所引用的字符串不能被改变,Stringbuffer和Stringbuilder定义的可以通过各种方法来达到简单的增删改;
-
String和Stringbuilder在单线程环境下使用;
-
StringBuffer在多线程环境下使用,可以保证线程同步;
Stringbuilder 和StringBuffer 实现方法类似,均表示可变字符序列,不过StringBuffer
用synchronized关键字修饰(保证线程同步)
运行速度
- Stringbuilder 最快,不需要考虑线程同步;
- StringBuffer次之;
- String最慢,因为每次都要重新开辟内存,产生很多匿名对象,影响系统性能。
推荐阅读
-
Java中String、StringBuffer、StringBuilder的区别(转)
-
C#中String StringBuilder StringBuffer类的用法
-
String、StringBuffer、StringBuilder的区别和解析
-
String、StringBuffer和StringBuilder区别
-
JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果
-
Java之String、StringBuffer、StringBuilder的区别分析
-
PHP函数addslashes和mysql_real_escape_string的区别
-
String、StringBuilder和StringBuffer的区别
-
String 与 StringBuffer的区别
-
JAVA基础 String StringBuilder StringBuffer区别和使用场景