论string与stringbuilder和StringBuffer的区别

今天小白在看人家的优化时发现了一个很好的干货!干货哦!

决定与大家分享一二

     本着,身为即将成为一名程序猿大军的小白,平常在码代码的时候常常听人提及“优化”,对于这一词的耳濡目染常在我心中游荡。

     今日有幸得及度娘的助力下,提升自我!

     决定把我个人的思想与大家分享一二,入门小白,大牛望谅解!


含义:

string:字符串,其类不可变

StringBuilder表示一个可变得字符串序列

作用:

         string:存储多个数据字符,但其数值是不可以改变的字符串。当使用System.String类中的方法时,都要在内存中创建新的字符串对象并分配新的空间,创建新的String对象对系统开销是非常浪费的。

         StringBuilder:属于动态对象,允许扩充它所封装的字符串数量,也可容纳其指定的一个值。例如,可以创建 StringBuilder 类的带有字符串“Aaron”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。以下代码示例指定可以将MyStringBuilder 对象扩充到最大 25 个空白。   
                             如:MyStringBuilder.Capacity = 25

例子:

         string:       

     

  static void Main(string[] args)
        {
            String S1 = "orange";
            String S2 = "Aaron";
            S1 += S2;   //+=运算符会创建一个包含组合内容的新字符串。
            Console.WriteLine(S1);

            S1 = S1.Substring(2, 5);    //取其指定字符串,S1将变成新的字符串
            Console.WriteLine(S1);
            Console.ReadKey();
        }


         StringBuilder:

<span style="font-size:18px;"></span><pre name="code" class="csharp">  static void Main(string[] args)
<span style="font-size:18px;">       {
            StringBuilder Aaron = new StringBuilder();
            Aaron.Append("ao");
            Aaron.Append("bo");
            Aaron.Append("co");     //Aaron字符串变量具有容纳不同字符串
            string str = Aaron.ToString();
            Console.WriteLine(str);
            Console.ReadKey();
        }</span>

 
 

总结:

1.如果要操作少量的数据用 = String

2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder(速度快,节省缓冲空间)

3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer(安全性较高)


StringBuilder与StringBuffer


前言:

             StringBuilder与StringBuffer我一般多用于SQL链接、查询等方面它们俩者又有何区别呢!根据它们的各性能优势与区别总结了俩点。

1.安全性

         相信大部分网页都知道,再好的数据系统如果不安全存在隐患对于Date的丢失是至关致命的,所以一个好的程序员要审时定势,保证出任务的完成,同时也要保证项目的质量。


当字符串缓冲区被多线程使用时:

         StringBuilder:线程是处于不安全的(速度快,多线程状态下含隐患,建议单线程下使用)

         StringBuffer  :线程具备安全防范(速度慢,但安全,建议多线程状态下使用)

2.个人见解

        俩者都属于字符串变量,都是可以改变的对象,不能决定谁好谁坏,合理的利用才是王道!

       












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值