String、StringBuilder、StringBuffer 的区别?

String:用于字符串操作,属于不可变类;【补充:String 不是基本数据类型,是引用类型,底层用 char 数组实现的】

StringBuilder:与 StringBuffer 类似,都是字符串缓冲区,但线程不安全;

StringBuffer:也用于字符串操作,不同之处是 StringBuffer 属于可变类,对方法加了同步锁,线程安全

StringBuffer的补充

说明:StringBuffer 中并不是所有方法都使用了 Synchronized 修饰来实现同步:

@Overridepublic StringBuffer insert(int dstOffset, CharSequence s) {  
    // Note, synchronization achieved via invocations of other StringBuffer methods  
    // after narrowing of s to specific type  
    // Ditto for toStringCache clearing  
    super.insert(dstOffset, s);  
    return this;
}

执行效率:StringBuilder > StringBuffer > String

发表评论