String残揉、String StringBuffffer 和 StringBuilder 的區(qū)別是什么?
????????String是只讀字符串胧后,它并不是基本數(shù)據(jù)類型,而是一個對象抱环。從底層源碼來看是一個final類型的字符數(shù)組壳快,所引用的字符串不能被改變途样,一經(jīng)定義,無法再增刪改濒憋。每次對String的操作都會生成新的String對象何暇。? ??
每次+操作 :隱式在堆上new了一個跟原字符串相同的StringBuilder對象,再調(diào)用append方法 拼接+后面的字符凛驮。
StringBuffer和StringBuilder他們兩都繼承了AbstractStringBuilder抽象類裆站,從AbstractStringBuilder抽象類中我們可以看到
????????他們的底層都是可變的字符數(shù)組,所以在進(jìn)行頻繁的字符串操作時黔夭,建議使用StringBuffer和StringBuilder來進(jìn)行操作宏胯。 另外StringBuffer 對方法加了同步鎖或者對調(diào)用的方法加了同步鎖,所以是線程安全的本姥。StringBuilder 并沒有對方法進(jìn)行加同步鎖肩袍,所以是非線程安全的.