服務(wù)熱線
153 8323 9821
StringBuilder 采用了構(gòu)造器設(shè)計(jì)模式的思想高效地構(gòu)造一個(gè)字符串對(duì)象,在構(gòu)造過(guò)程中StringBuilder可以有效避免臨時(shí)字符串對(duì)象的生成。
1:當(dāng)需要操作很長(zhǎng)的字符串,或者要對(duì)字符串進(jìn)行非常頻繁的操作時(shí),應(yīng)該使用StringBuilder,其余場(chǎng)合,用String比較方便。
2:之所以說(shuō)平常情況用String比較方便是因?yàn)椋?/p>
StringBuilder sb="hello world!"; 這樣的語(yǔ)句是不行的,要用:
StringBuilder sb=new StringBuilder("hello world!"); 這樣子才能初始化一個(gè)StringBuilder對(duì)象。
sb="change the content of StringBuilder"; 這樣的語(yǔ)句也是不行的,不能直接把String轉(zhuǎn)換成StringBuilder,顯式轉(zhuǎn)換也不成!
sb.Remove(0, sb.Length);
sb.Append("Test for string builder change!"); 這樣子才能改變一個(gè)StringBuilder對(duì)象的內(nèi)容?;蛘哂胹b.Replace();方法。
3:StringBuilder類還有一個(gè)這樣的特性:它的Length屬性是非ReadOnly的,
假如有: StringBuilder sb=new StringBuilder("12345");
執(zhí)行: sb.Length=3;
再輸出sb的內(nèi)容,就只剩 123 了。如果這個(gè)Length設(shè)置大于原來(lái)的長(zhǎng)度,那么后面補(bǔ)空格。
String 類型沒(méi)有這個(gè)功能,它的Length是read only的!
“StringBuilder類內(nèi)部保留了一個(gè)私有的String 類型成員,當(dāng)ToString()這個(gè)方法被調(diào)用時(shí),這個(gè)String 類型成員將會(huì)被賦值并且返回給調(diào)用者。在字符串組裝期間,這個(gè)字符串會(huì)在內(nèi)存上被直接修改。StringBuilderod 不僅僅提供了性能上更加優(yōu)秀的字符串操作,它還能被用來(lái)和非托管代碼進(jìn)行交互。對(duì)于非托管的代碼,字符串的操作是直接基于內(nèi)存的,如果使用字符串類型和非托管的代碼進(jìn)行,那潛在的違反了字符串對(duì)象不可變的原則。所以StringBuilder類常常被用來(lái)和非托管代碼進(jìn)行交互。”