zoukankan      html  css  js  c++  java
  • StringBuilder和String有哪些区别?

        StringBuilder和String对象都可以很方便的处理字符串,他们具备各自的特点,如下:

      System.String具有以下五个特点:

    1.  String是引用类型,在堆上分配内存。

    2.  String对象一旦生成,就不可改变(Immutable)。

    3.  String提供了大量便捷的字符串操作函数。

    4.  String运算时会产生一个新的实例。

    5. 在程序中定义相等运算符(==)和(!=),可以方便比较String对象的值(而不是引用)。

    StringBuilder具有以下两个特点:

     StringBuilder对象是动态对象,允许扩充它所封装的字符串中的字符数量。

     StringBuilder可以用于修改StringBuilder中的内容。

    由于String对象一旦声称,就不可改变,所以每次使用System.String类中的方法时,都需要在内存中创建一个新的字符串对象,这会分配新的空间给新的对象。如果对字符串执行重复修改,创建一个新的String对象导致 的系统开销可能会非常昂贵。如果不创建新的对象,只是修改字符窜,则可以使用StringBuilder类。StringBuilder类型可以很好的解决字符串操作的性能问题,在它声称String对象之前,将不会产生任何String对象。以下示例代码对使用StringBuilder和使用String的性能差异做了比较。代码如下:

    View Code
     class Program
        {
            static void Main(string[] args)
            {
                long time1 = 0;
                long time2 = 0;
                Stopwatch s = new Stopwatch();
                s.Start();
                useStringBuilder("ID NUMBER", 20000);
                s.Stop();
                time1 = s.ElapsedMilliseconds;
    
                s.Start();
                useString("ID NUMBER", 20000);
                s.Stop();
                time2 = s.ElapsedMilliseconds;
    
                Console.WriteLine("useStringBuilder:" + time1);
                Console.WriteLine("useString:" + time2);
                Console.Read();
            }
    
            static string useStringBuilder(string ID, int number)
            {
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < number; i++)
                {
                    builder.Append(ID + i.ToString());
                }
                return builder.ToString();
            }
    
            static string useString(string ID, int number)
            {
                string temp = "";
                for (int i = 0; i < number; i++)
                {
                    temp += ID + i.ToString();
                }
                return temp;
            }
        }

    结果如下:

    useStringBuilder:6
    useString:1866

    结果悬殊差别好大。

  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/vincentvoid/p/2441697.html
Copyright © 2011-2022 走看看