18-09-20,String 与 StringBuilder (StringBuffer)
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。
上一篇: shell编程-语句(七)
下一篇: php压缩和解压缩字符串的方法
推荐阅读
-
String、StringBuffer和StringBuilder区别
-
Windows Phone开发之String与StringBuilder
-
Java面试题(String、StringBuilder、StringBuffer)
-
Java StringBuffer类与StringBuilder类用法实例小结
-
JDK源码分析之String、StringBuilder和StringBuffer
-
浅析Java中String与StringBuffer拼接的区别
-
C#中String和StringBuilder的简介与区别
-
java中String与StringBuilder的区别
-
JDK源码分析之String、StringBuilder和StringBuffer
-
string与stringbuilder两者的区别