美文网首页
String&StringBuffer&Stri

String&StringBuffer&Stri

作者: 小乖心塞 | 来源:发表于2017-03-07 11:12 被阅读19次

    String

    • String为不可变的。所以对字符串每次操作都会新建一个String。
    • java.lang.String 为public final class String implements java.io.Serializable, Comparable<String>, CharSequence 被final修饰,所以为不可变的类。
    • 操作频繁,产生大量开销

    StringBuffer&StringBuiler

    • StringBuffer&StringBuiler在内部都维护着字符数组
    • append方法,就是对字符数组进行操作
    public AbstractStringBuilder append(String str) {
            if (str == null)
                return appendNull();
            int len = str.length();
            ensureCapacityInternal(count + len);
            str.getChars(0, len, value, count);
            count += len;
            return this;
        }
    
    • StringBuffer为线程安全的,方法上都会加上synchronized 关键字,同步。
    public synchronized StringBuffer append(String str) {
            toStringCache = null;
            super.append(str);
            return this;
     }
          ```
    -  StringBuffer为线程不安全的,没有加锁,释放锁,所以效率更高。

    相关文章

      网友评论

          本文标题:String&StringBuffer&Stri

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