无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

1.2 String 和 StringBuffer,StringBuilder 的區(qū)別是什么? String 為什么是不可變的

2020-11-10 22:49 作者:夜雨658  | 我要投稿

可變性?

簡(jiǎn)單的來說:String 類中使用 final 關(guān)鍵字字符數(shù)組保存字符串, private final char value[] ,所以 String 對(duì)象是不可變的。而 StringBuilder 與 StringBuffer 都繼承自 AbstractStringBuilder 類,在 AbstractStringBuilder中也是使用字符數(shù)組保存字符串 char[]value 但是沒有 用 final 關(guān)鍵字修飾,所以這兩種對(duì)象都是可變的。

StringBuilder 與 StringBuffer 的構(gòu)造方法都是調(diào)用父類構(gòu)造方法也就是 AbstractStringBuilder 實(shí)現(xiàn)的,大家可以自?

行查閱源碼。 2

AbstractStringBuilder.java?

abstract class AbstractStringBuilder implements Appendable, CharSequence {

char[] value;?

int count;?

AbstractStringBuilder() {

}?

AbstractStringBuilder(int capacity) {?

value = new char[capacity];

}?

線程安全性?

String 中的對(duì)象是不可變的,也就可以理解為常量,線程安全。 AbstractStringBuilder 是 StringBuilder 與 StringBuffer 的公共父類,定義 了一些字符串的基本操作,如 expandCapacity.append.insert.indexOf 等公 共 方法。StringBuffer 對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以 是線程安全的。StringBuilder 并沒有對(duì) 方法進(jìn)行加同步鎖,所以是非線程安全的。?

性能?

abstract class AbstractStringBuilder implements Appendable, CharSequence {?

char[] value;

int count;?

AbstractStringBuilder() {?

}?

AbstractStringBuilder(int capacity) {

value = new char[capacity];

}

每次對(duì) String 類型進(jìn)行改變的時(shí)候,都會(huì)生成一個(gè)新的 String 對(duì)象,然 后將指針指向新的 String 對(duì)象。

StringBuffer 每次都會(huì)對(duì) StringBuffer 對(duì)象本身進(jìn)行操作,而不是生成新 的對(duì)象并改變對(duì)象引用。相同情況下使用 StirngBuilder 相比使用

StringBuffer 僅能獲得 10%~15% 左右的性能提升,但卻要冒多線程不安全的 風(fēng)險(xiǎn)。

3 對(duì)于三者使用的總結(jié):

1. 操作少量的數(shù)據(jù) = String?

2. 單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) = StringBuilder?

3. 多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) = StringBuffer

1.2 String 和 StringBuffer,StringBuilder 的區(qū)別是什么? String 為什么是不可變的的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
丰县| 汕尾市| 古蔺县| 富锦市| 婺源县| 海宁市| 安图县| 汽车| 弥渡县| 文昌市| 安阳市| 宝清县| 沧源| 绵竹市| 孟村| 邓州市| 深州市| 贡觉县| 台州市| 石柱| 巴东县| 赤城县| 海丰县| 德格县| 鄱阳县| 武穴市| 新晃| 宿州市| 昌宁县| 法库县| 秭归县| 临洮县| 锡林浩特市| 宁德市| 金川县| 涡阳县| 新宁县| 宣威市| 德令哈市| 克什克腾旗| 黄梅县|