• 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。

     学习中。。。。

  • 相关阅读:
    (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
    (转)Quartz任务调度(1)概念例析快速入门
    如何解决Win10预览版一闪而过的disksnapshot.exe进程?
    【转】SSH中 整合spring和proxool 连接池
    datatables 配套bootstrap3样式使用小结(1)
    PowerDesigner16逆向工程生成PDM列注释(My Sql5.0模版)
    PowerDesigner连接mysql逆向生成pdm
    Power Designer逆向操作(从mysql5.0生成数据库的物理模型)
    范仁义js课程---53、匿名函数应用
    范仁义js课程---52、匿名函数
  • 原文地址:https://www.cnblogs.com/for917157ever/p/2491635.html
Copyright © 2020-2023  润新知