1. 程式人生 > >String和stringbuffer、stringbuilder的區別

String和stringbuffer、stringbuilder的區別

從執行速度與執行緒安全兩個方面看:

String型別的變數是作為字元常量儲存,後兩者是作為字元變數儲存。也就是String物件是不可變的。

所以,當字串不進行大量操作的時候String物件的執行速度是最快的。

當需要對字串進行修改操作的時候,Sting是最慢的。

總體執行速度(對字串進行修改操作的時候):

StringBuilder > StringBuffer > String

執行緒安全:

String由於物件不可變,所以不存在多執行緒不安全的問題。

StringBuilder  是執行緒不安全的。原始碼:

@Override
public StringBuilder append(boolean b) {
    super.append(b);
    return this;
}

StringBuffer 是執行緒安全的。原始碼:

@Override
synchronized StringBuffer append(AbstractStringBuilder asb) {
    toStringCache = null;
    super.append(asb);
    return this;
}