美文网首页
String StringBuilder与StringBuffe

String StringBuilder与StringBuffe

作者: 素月某某 | 来源:发表于2019-01-02 21:41 被阅读7次

简而言之:

三者区别主要是运行速度和线程安全两个方面。

1 运行速度比较:StringBuilder > StringBuffer > String

具体分析:

(1) String

String本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的同名的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响。


1.png 2.png

(2) StringBuilder和StringBuffer

而StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能


3.png 4.png

如何选择

当程序中需要大量的对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字符串,其设计目的就是针对大量string操作的一种改进办法,避免产生太多的临时对象;而当程序中只是对某个字符串进行一次或几次操作时,采用string类即可。

2 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。

如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的

如何选择

单线程,选择速度不较快的StringBuilder;多线程,使用StringBuffer

3 总结一下

String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下,对字符串进行大量操作的情况

StringBuffer:适用多线程下,对字符串进行大量操作的情况

扩展

三者继承关系

5.png

参考:
https://www.cnblogs.com/mrxy/p/8057657.html
https://www.cnblogs.com/su-feng/p/6659064.html

相关文章

网友评论

      本文标题:String StringBuilder与StringBuffe

      本文链接:https://www.haomeiwen.com/subject/fzitrqtx.html