String 和 StringBuilder 的区别和使用
2012-09-06 15:55
246 查看
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
StringBuilder是可变的,不用生成中间对象,拼接字符串比较多,或字符串的长度比较长时有较高的效率。StringBuilder的内存空间不够也要扩容,如果分配的空间远远大于需要量,也很浪费。所以,初始化StringBuilder的时候最好根据需要设置容量,避免浪费。
这两种在内存操作是不同的,第一种内存中有三个string(分别为"aa","bb","aabb") ,第二种只有一个("aabb"),所以性能是不同的。
StringBuilder表示可变字符串
String表示不可变字符串
需要频繁的使用字符串拼接操作的时候一般用StringBuilder类。
如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
StringBuilder是可变的,不用生成中间对象,拼接字符串比较多,或字符串的长度比较长时有较高的效率。StringBuilder的内存空间不够也要扩容,如果分配的空间远远大于需要量,也很浪费。所以,初始化StringBuilder的时候最好根据需要设置容量,避免浪费。
string a="aa"+"bb"; stringbuilder sb=new stringbuilder(); sb.append("aa"); sb.append("bb");
这两种在内存操作是不同的,第一种内存中有三个string(分别为"aa","bb","aabb") ,第二种只有一个("aabb"),所以性能是不同的。
StringBuilder表示可变字符串
String表示不可变字符串
需要频繁的使用字符串拼接操作的时候一般用StringBuilder类。
using System; using System.Text; public sealed class App { static void Main() { // Create a StringBuilder that expects to hold 50 characters. // Initialize the StringBuilder with "ABC". StringBuilder sb = new StringBuilder("ABC", 50); // Append three characters (D, E, and F) to the end of the StringBuilder. sb.Append(new char[] { 'D', 'E', 'F' }); // Append a format string to the end of the StringBuilder. sb.AppendFormat("GHI{0}{1}", 'J', 'k'); // Display the number of characters in the StringBuilder and its string. Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); // Insert a string at the beginning of the StringBuilder. sb.Insert(0, "Alphabet: "); // Replace all lowercase k's with uppercase K's. sb.Replace('k', 'K'); // Display the number of characters in the StringBuilder and its string. Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); } }
相关文章推荐
- Java中的String,StringBuilder,StringBuffer三者的区别和各自使用方法
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用
- String、StringBuffer、StringBuilder的区别和使用环境
- java 中的 String 操作“+”和StringBuilder使用区别
- String,StringBuffer,StringBuilder的区别及使用
- java字符串(1):String,StringBuffer,StringBuilder的使用与区别
- String、StringBuffer、StringBuilder主要区别及使用选择
- 使用StringBuilder, StringBuilder和String的区别
- String、StringBuffer、StringBuilder区别及使用场合
- String、StringBuffer和StringBuilder区别以及使用条件
- [转]使用StringBuilder, StringBuilder和String的区别
- Java关键字系列 — String、StringBuffer、StringBuilder的区别和使用
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- String, StringBuffer, StringBuilder三者的使用和区别
- 使用StringBuilder, StringBuilder和String的区别
- Java中String,StringBuffer,StringBuilder的区别及其使用
- String和StringBuilder的区别和使用