zoukankan      html  css  js  c++  java
  • String 和 StringBuilder 的相同点和不同点

    相同点:

         这两个对象都是对字符串的操作,

    不同点:

      String 类每次被引用时,都会重新这个字符串分配空间,而原来分配的空间还会有,如果重复操作,就会占据大量的内存空间,进而浪费内存资源,如:

      string str="一生";

         str=str+"有你";

        首先 定义了一个str变量,为"一生"这个字符串分配的物理内存空间,

      然后 str的值现在是"一生有你",在内在中也同样分配了一个物理空间来存放"一生有你",但上次在内在中分配的内存空间"一生",还占据着内存空间。

      StringBuilder 类 被实例引用时,都是对其原来的物理内存中的字符串进行操作的,不会再分配其它的物理空间,如果重复操作时,因为是对原来的

          物理空间操作,所以也就不会造成资源浪费的迹象。如:

         StringBuilder sb = new StringBuilder("一生");
         sb.Append("有你");
         Response.Write(sb);

     string 和StringBuilder 的性能比较

    string str = "";
                StringBuilder sbstr= new StringBuilder();
                int times = 1000;
                int end=0, start=0;
                //测试sting 所用的时间
                for (int i = 0; i < times; i++)
                {
                    str += i.ToString();
                }
                end = Environment.TickCount;
                Console.WriteLine((end - start));

                //测试stringbuilder 所用的时间
                start = Environment.TickCount;
                for (int k = 0; k < times; k++)
                {
                    sbstr.Append(k.ToString());
                }
                end = Environment.TickCount;
                Console.WriteLine(end - start);
                Console.ReadKey();

    运行结果:(所用的毫秒数)

    str : 416670062

    sbstr: 0

         通过上面的分析,可以看出用String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。

     学习中。。。。

  • 相关阅读:
    P1005 矩阵取数
    [BZOJ2662][BeiJing wc2012]冻结
    [BZOJ1191]超级英雄Hero
    [bzoj1008] 越狱
    [bzoj1001]狼抓兔子 最小割
    网络流24题——负载平衡问题
    分形小山
    可并堆——左偏树、斜堆
    NOIP最优贸易
    洛谷P2073送花
  • 原文地址:https://www.cnblogs.com/for917157ever/p/2491635.html
Copyright © 2011-2022 走看看