美文网首页
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