String 對象是不可改變的。每次使用 System.String 類中的方法之一時,都要在內存中創建一個新的字符串對象,這就需要為該新對象分配新的空間。
StringBuilder 對象是動態對象,允許擴充它所封裝的字符串中字符的數量,但是您可以為它可容納的最大字符數指定一個值,當修改 StringBuilder 時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍。可以使用重載的構造函數之一來指定 StringBuilder 類的容量。
例如: StringBuilder hr = new StringBuilder(); hr.Append("a")
他不會頻繁申請內存空間,他會自動向后擴展。
兩者的區別:
1. string 對象時恒定不變的,stringBuider對象表示的字符串是可變的。stringBuilder是.net提供的動態創建string的高效方式,以克服string對象恒定性帶來的性能影響。
2. 對于簡單的字符串連接操作,在性能上stringBuilder并不一定總是優于string。因為stringBuider對象創建代價較大,在字符串目標連接較少的情況下,過度濫用stringBuilder會導致性能的浪費,只有大量的或者無法預知次數的字符串操作,才考慮stringBuilder來實現。事實上,一般連接次數設置100次以內,根本看不出兩者的性能差別。
3. 當修改字符串信息時,此時不許創建對象,可以使用stringBuilder對象。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/Mogul1/article/details/81191609