String、StringBuilder、StringBuffer區(qū)別

1、可變性

String對數(shù)據(jù)的保存是通過字符數(shù)組存儲,但是該數(shù)組使用了“final”進(jìn)行修飾,所以是不可變的;String中定義:private final charvalue[];

StringBuilder和StringBuffer都是集成于AbstractStringBuilder,AbstractStringBuilder中對數(shù)據(jù)的保存也是通過字符數(shù)組進(jìn)行保存的,但是沒有進(jìn)行"final"修飾,所以是可變的;AbstractStringBuilder中定義:char[]value;


2、安全性

String的數(shù)組是不可變得,可以理解成常量,所以是線程安全的;

AbstractStringBuilder中的數(shù)組是可變的,但是StringBuffer中方法使用了同步鎖,因此也是線程安全的。而StringBuilder則是線程不安全的;

StringBuffer中方法如下:

@Override

public synchronizedStringBufferappend(Object obj) {

toStringCache=null;

super.append(String.valueOf(obj));

return this;

}


3、StringBuilder與StringBuffer的共同點(diǎn)

兩者有共同的父類,所以他們有共同的父類方法,只是StringBuffer針對父類方法添加了同步鎖;

單線程使用StringBuilder效率要高于StringBuffer;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • String,StringBuilder,StringBuffer都表示字符串,但是你真的了解過它們的區(qū)別嗎好,我...
    bug小王子閱讀 430評論 0 6
  • 1. String 類 String的值是不可變的,這就導(dǎo)致每次對String的操作都會生成新的String對象,...
    雨筍情緣閱讀 294評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,656評論 0 3
  • 一一孩子期末小考 天公罩起蒸籠傘, 蒸得人們汗洗臉。 孩子教室期未檢, 大滴汗珠吻試卷。 孩子,生活每時每刻都在...
    旖旎i閱讀 209評論 0 4

友情鏈接更多精彩內(nèi)容