自己總結,簡而言之,stringbuilder和string的區別在於:
stringbuilder是變長的。
string是定長的。
以下詳細介紹string和stringbuilder的使用:
我們先看乙個例子
string s1 = "orange";
string s2 = "red";
s1 += s2;
system.console.writeline(s1); // outputs "orangered"
s1 = s1.substring(2, 5);
system.console.writeline(s1); // outputs "anger"
大家都知道字串物件是「不可變的」,
對字串進行操作的方法實際上返回的是新的字串物件。
在前面的示例中,將 s1 和 s2 的內容連線起來以構成乙個字串時,包含"orange" 和 "red" 的兩個字串均保持不變。+= 運算子會建立乙個包含組合內容的新字串。
結果是:
s1 現在引用乙個完全不同的字串。只包含"orange" 的字串仍然存在,但連線 s1 後將不再被引用。
大量的字串相加的時候就會有很多像s1一樣的不在被引用,從而造成資源的極大浪費.
我們在看看stringbuilder是如何處理這樣的問題.
一、stringbuilder定義
string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。在需要對字串執行重複修改的情況下,與建立新的 string 物件相關的系統開銷可能會非常昂貴。如果要修改字串而不建立新的物件,則可以使用 system.text.stringbuilder 類。
例如,當在乙個迴圈中將許多字串連線在一起時,使用 stringbuilder 類可以提公升效能。
通過用乙個過載的建構函式方法初始化變數,可以建立 stringbuilder 類的新例項,如下例:
例如:stringbuilder mystringbuilder = new stringbuilder("hello world!");
二、設定容量和長度
1、雖然 stringbuilder 物件是動態物件,允許擴充它所封裝的字串中字元的數量,但是您可以為它可容納的最大字元數指定乙個值。此值稱為該物件的容量,不應將它與當前 stringbuilder 物件容納的字串長度混淆在一起。例如,可以建立 stringbuilder 類的帶有字串「hello」(長度為 5)的乙個新例項,同時可以指定該物件的最大容量為 25。當修改stringbuilder 時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍。可以使用過載的建構函式之一來指定 stringbuilder 類的容量。以下**示例指定可以將mystringbuilder 物件擴充到最大 25 個空白。
例如:stringbuilder mystringbuilder = new stringbuilder("hello world!", 25);
2、另外,可以使用讀/寫 capacity 屬性來設定物件的最大長度。以下**示例使用 capacity 屬性來定義物件的最大長度。
例如: mystringbuilder.capacity = 25;
3、ensurecapacity 方法可用來檢查當前 stringbuilder 的容量。如果容量大於傳遞的值,則不進行任何更改;但是,如果容量小於傳遞的值,則會更改當前的容量以使其與傳遞的值匹配。
4、 也可以檢視或設定 length 屬性。如果將 length 屬性設定為大於 capacity 屬性的值,則自動將 capacity 屬性更改為與length 屬性相同的值。如果將 length 屬性設定為小於當前 stringbuilder 物件內的字串長度的值,則會縮短該字串。
三、修改 stringbuilder 字串
例如:
此示例將 hello world! what a beautiful day. 顯示到控制台。
例如:3、stringbuilder.insert 將字串或物件插入到當前 stringbuilder 物件的指定索引處。
例如:stringbuilder mystringbuilder = new stringbuilder("hello world!");
mystringbuilder.insert(6,"beautiful ");
console.writeline(mystringbuilder);
此示例將 hello beautiful world! 顯示到控制台。
4、stringbuilder.remove 從當前 stringbuilder 物件中移除指定數量的字元。
例如:stringbuilder mystringbuilder = new stringbuilder("hello world!");
mystringbuilder.remove(5,7);
console.writeline(mystringbuilder);
此示例將 hello 顯示到控制台。
5、stringbuilder.replace 替換指定索引處的指定字元。
例如:stringbuilder mystringbuilder = new stringbuilder("hello world!");
mystringbuilder.replace('!', '?');
console.writeline(mystringbuilder);
此示例將 hello world? 顯示到控制台。
string和StringBuilder的區別
博主最近做訂餐系統,因為是在成品上進行迭代開發,所以裡面就有很多前人的智慧型和。神奇之處。然後我就看到了下面這一堆 stringbuilder sb new stringbuilder 訂單排到上面 if flagz 後面n多行後面還有就不整出來了,這堆 給我看蒙了,先不說好壞,不過做到了整齊。然後...
String和StringBuilder有什麼不同
string類 字串是常量 它們的值在建立後不能更改。字串的底層其實是乙個被final修飾的陣列,不能改變,是常量 private final byte value stringbuilder類字串緩衝區,可以提高字串的操作效率 看成乙個長度可以變化的字串 底層也是乙個陣列,但是沒有被final修飾...
string 和stringBuilder的區別
1.string 物件時恆定不變的,stringbuider物件表示的字串是可變的。stringbuilder是.net提供的動bai態建立string的高效方式,以克服string物件恆定性帶來的效能影響 2.對於簡單的字串連線操作,在效能上stringbuilder並不一定總是優於string。...