String 和 StringBuilder

发布时间 2023-04-03 22:59:32作者: 哑ba湖大水怪

String 类型在C#中用于保存字符,属于引用类型,一旦创建就不能再修改。

  1.在创建新字符串时,会在内存中重新分配空间。

    string str="hello world";

  2.把一个字符串赋值给另外一个字符串,也会重新分配空间。

    string str1=str;

  3.修改字符串的值,也会重新分配空间。

    string str1="hello";

    str1="HELLO";

    注:重新赋值之后,原来的 hello 已经废弃,但是还占着内存空间,需要使用GC垃圾回收器,让GC回收不再使用变量

  4.多个字符串合并,也会重新分配空间

    string str2 = str + str1;

 

StringBuilder 类型表示【可变字符字符串】类型,其中的字符可以被改变,增加,删除,并且可以自由扩展大小。

  StringBuilder strigBuilder =new StringBuilder();//创建StringBuilder

  strigBuilder.Append("hello");//添加字符串

  strigBuilder.Remove(1, 2);//从下标为1开始移除两个字符

  1.一个StringBuilder 默认容量是16,当向一个已满的StringBuilder添加字符时,其会自动申请内存进行扩容。

  扩容规律:扩容没有超过20,就扩容20,超过20就超出多少扩容多少

  StringBuilder stringBuilder1=new StringBuilder("helloworldhelloworld");//初始数20

   情况1: stringBuilder1.Append("helloworld");//添加10

       Console.WriteLine(stringBuilder1.Capacity);//输出40

  情况2:  stringBuilder1.Append("helloworldhelloworldhello");//添加25

      Console.WriteLine(stringBuilder1.Capacity);//输出45

  //在执行情况1或情况2之后再次进行添加操作则会将空间翻倍

  stringBuilder10.Append("helloworldhelloworldhelloworld");//添加30
  Console.WriteLine(stringBuilder1.Capacity);//输出80

  2.可以重新赋值。

    StringBuilder strigBuilder2 =new StringBuilder();