18-09-20,String 与 StringBuilder (StringBuffer)
程序员文章站
2022-12-25 18:30:29
1.其一 在运行速度方面:StringBuilder > StringBuffer > String 上实例 上述两个例子只是for循环 从0 到99 博主笔记本有点卡 当数据庞大时优势就展示出了 铁证如山 ,就是有图有真相的那种 那么, 为什么会出现这种运行速度的差别,引出其二区别 2.其二 数据 ......
1.其一
在运行速度方面:stringbuilder > stringbuffer > string
上实例
class program { static void main(string[] args) { theteststring(); } /// <summary> /// string /// </summary> public static void theteststring() { string str = null; //创建计时器 头一回见 引这个 system.diagnostics 命名空间 stopwatch stopwatch = new stopwatch(); //计时器 start stopwatch.start(); for (int i = 0; i < 100; i++) { str += i; } //计时器 end stopwatch.stop(); //输出str console.writeline(str); //输出程序运行时间 console.writeline(stopwatch.elapsed); //控制台程序闪退的坑 console.readkey(); } }
class program { static void main(string[] args) { //theteststring(); stringbuilder(); } #region stringbuilder public static void stringbuilder() { stringbuilder stringbuilder = new stringbuilder(); stopwatch stopwatch = new stopwatch(); //计时器 start stopwatch.start(); for (int i = 0; i < 100; i++) { stringbuilder.append(i); } //计时器 end stopwatch.stop(); //输出str console.writeline(stringbuilder); //输出程序运行时间 console.writeline(stopwatch.elapsed); //控制台程序闪退的坑 console.readkey(); } #endregion }
上述两个例子只是for循环 从0 到99 博主笔记本有点卡 当数据庞大时优势就展示出了 铁证如山 ,就是有图有真相的那种 那么,
为什么会出现这种运行速度的差别,引出其二区别
2.其二
数据类型
string :乃字符串常量 引用数据类型,一旦创建即不可更改,stringbuilder:stringbuilder是一个可变的字符序列(百度百科)
又如
1 string str="张"; 2 console.writeline(str); 3 str+="三"; 4 console.writeline(str);
貌似从张变成了张三 但却为两个对象,变量名称相同但是 指向的堆中数据不同 一个指向 “张“,另一个指向 “张三“”
而反观stringbuilder以char为单位向字符串分配空间,所以操作中不需要进行额外的内存分配
3.其三
在线程安全上,stringbuilder是线程不安全的,而stringbuffer是线程安全的
如果一个stringbuffer对象在字符串缓冲区被多个线程使用时,stringbuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,
但stringbuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用stringbuffer,但是在单线
程的情况下,还是建议使用速度比较快的stringbuilder。(csdn)
ps:看一哈vs里面的监视器,今天over。
上一篇: 爆笑,校园生活一点也不寂寞
推荐阅读
-
浅析C#中StringBuilder类的高效及与String的对比
-
String、StringBuffer和StringBuilder类的区别
-
全面解释java中StringBuilder、StringBuffer、String类之间的关系
-
详解.NET中string与StringBuilder在字符串拼接功能上的比较
-
Java中String、StringBuffer、StringBuilder的区别(转)
-
C#中String StringBuilder StringBuffer类的用法
-
ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较
-
Windows Phone开发之String与StringBuilder
-
String、StringBuffer、StringBuilder的区别和解析
-
String、StringBuffer和StringBuilder区别