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 = ; i < ; 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 = ; i < ; 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是一个可变的字符序列(百度百科)

    又如

     string str="张";
    console.writeline(str);
str+="三";
console.writeline(str);

貌似从张变成了张三   但却为两个对象,变量名称相同但是  指向的堆中数据不同 一个指向 “张“,另一个指向 “张三“”

而反观stringbuilder以Char为单位向字符串分配空间,所以操作中不需要进行额外的内存分配

3.其三

  在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

  如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,

  但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线

       程的情况下,还是建议使用速度比较快的StringBuilder。(csdn)

ps:看一哈vs里面的监视器,今天OVER。

    

18-09-20,String 与 StringBuilder (StringBuffer)的更多相关文章

  1. 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)

    数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...

  2. Java基础知识强化09:String、StringBuffer和StringBuilder使用

    1. 对于三者使用的总结: (1).如果要操作少量的数据用 = String               (2).单线程操作字符串缓冲区下操作大量数据 = StringBuilder (3).多线程操 ...

  3. 探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  4. 探秘Java中String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  5. Java中String、StringBuilder以及StringBuffer

    原文出处: 海子 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffe ...

  6. 转发: 探秘Java中的String、StringBuilder以及StringBuffer

    原文地址 探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家 ...

  7. Java 中的String、StringBuilder与StringBuffer的区别联系(转载)

    1 String 基础 想要了解一个类,最好的办法就是看这个类的源代码,String类源代码如下: public final class String implements java.io.Seria ...

  8. 探秘Java中的String、StringBuilder以及StringBuffer(转载)

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...

  9. string,stringbuilder,stringbuffer用法

    总结:1.如果要操作少量的数据用 = String   ==================================>字符串常量2.单线程操作字符串缓冲区 下操作大量数据 = Strin ...

随机推荐

  1. ceph 常见问题百科全书---luminous安装部署篇

    1. 执行步骤:ceph-deploy new node        机器:centos 7.5   ceph  Luminous版本     源:阿里云 问题: Traceback (most r ...

  2. [Swift]LeetCode1033. 移动石子直到连续 | Moving Stones Until Consecutive

    Three stones are on a number line at positions a, b, and c. Each turn, let's say the stones are curr ...

  3. 入门系列之Scikit-learn在Python中构建机器学习分类器

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学.人工智能和统计学的研究领域.机器学习的重点是训练算法以学习模式并根据数据进行预 ...

  4. 对EF的封装

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. 安卓开发笔记(二十二):读取本地(内置)html文件并实现和Javascript交互

    实际上我们通常是使用WebView控件对本地html进行读取,这样就可以体会类似web app和安卓原生混合开发的乐趣了.在读取本地html并展示在前台的时候,并不需要在Androidmenifast ...

  6. Exp5 Msf基础应用 20164312 马孝涛

    1.本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击,如ms11_ ...

  7. 阿里云SLB出现502 Bad Gateway 错误排查解决方法

    502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...

  8. 探索JS引擎工作原理

    JavaScript 从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习 JS 引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用 ...

  9. 新更新kb4493472导致无法正常开机

    昨天陆续接到电话,说是系统更新后电脑不能正常使用,症状基本是开机到欢迎界面就出现各种各样的状况,比如鼠标能动,其他无反应;欢迎界面结束后黑屏,只有鼠标能动:开机后正常,但电脑使用很卡等等状况.因为昨天 ...

  10. MySQL 中 update 修改数据与原数据相同会再次执行吗?

    阅读本文大概需要 2.8 分钟. 作者:powdba 来源:阿里云栖社区 一.背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执 ...