18-09-20,String 与 StringBuilder (StringBuffer)
2018-09-20 21:55
218 查看
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。
相关文章推荐
- Java基础知识强化09:String、StringBuffer和StringBuilder使用
- 【J2SE】——String、StringBuffer与StringBuilder
- String与StringBuilder与StringBuffer的区别
- Java深究之String、StringBuffer、StringBuilder的区别
- Java基础12:String、StringBuffer和StringBuilder的区别
- String、StringBuffer和StringBuilder之间的区别
- java面试题String,StringBuilder,StringBuffer
- String,StringBuffer,StringBuilder 三者之间的区别是什么?
- String、StringBuffer和StringBuilder
- String,StringBuffer与StringBuilder的区别??
- String,StringBuffer与StringBuilder的区别??
- String,StringBuffer,StringBuilder的区别
- String和StringBuffer和StringBuilder之间区别
- String,StringBuffer与StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别
- Java知识点<5> String , StringBuilder , StringBuffer
- Java中的String,StringBuilder,StringBuffer的区别
- String,StringBuffer,StringBuilder性能比较,线程安全测试,源码解析。
- JAVA回顾巩固之String、StringBuilder、StringBuffer结合源码比较
- String,StringBuffer ,StringBuilder类型区别