• String、StringBuffer、StringBuilder的区别


    从性能、速度方面来说,StringBuilder > StringBuffer > String

    String str = "a";
    str += "b";

    StringBuilder str2 = new StringBuilder("a");
    str2.append("b");

    StringBuffer str3 = new StringBuffer("a");
    str3.append("b");

    这里先声明了一个String类型的对象,值是"a",把str这个句柄指向了这个对象,然后,当我们把这个对象进行+=操作的时候,实际上是又创建了一个String对象,这个对象的值是"a"+“b"也就是"ab”,然后改变句柄str让它指向了这个新的对象,原来的对象失去了引用,就被jvm垃圾回收了。

    而StringBuffer和StringBuilder是直接改变自己本身对象的值,性能自然比较高。

    从线程角度去看,String、StringBuffer是线程安全的,而StringBuilder是线程不安全的

    String是final修饰的类,是不可变的,所以是线程安全的。

    打开StringBuffer源码就会发现所有写操作都被synchronized修饰了,所以所有修改操作都是串行的。

    而StringBuilder的写操作则没有使用synchronized进行修饰,也不包含其他串行化修改的算法。

    总结

    String适用于少量的字符串操作的情况
    StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer适用多线程下在字符缓冲区进行大量操作的情况

    原文链接:https://blog.csdn.net/qq_37856300/article/details/84340288

  • 相关阅读:
    家庭记账本---开发进度1
    HDOJ 1004--Let the Balloon Rise
    DP HDIJ1421 搬宿舍
    动态规划之最长公共子序列
    和最大的子序列之二
    和最大的子序列之一
    动态规划之一最长上升子序列LIS
    动态规划之一数塔
    动态规划之一ones
    动态规划实例
  • 原文地址:https://www.cnblogs.com/benbencyb/p/11732977.html
Copyright © 2020-2023  润新知