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 = ; 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)的更多相关文章
- 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)
数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...
- Java基础知识强化09:String、StringBuffer和StringBuilder使用
1. 对于三者使用的总结: (1).如果要操作少量的数据用 = String (2).单线程操作字符串缓冲区下操作大量数据 = StringBuilder (3).多线程操 ...
- 探秘Java中的String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...
- 探秘Java中String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...
- Java中String、StringBuilder以及StringBuffer
原文出处: 海子 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffe ...
- 转发: 探秘Java中的String、StringBuilder以及StringBuffer
原文地址 探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家 ...
- Java 中的String、StringBuilder与StringBuffer的区别联系(转载)
1 String 基础 想要了解一个类,最好的办法就是看这个类的源代码,String类源代码如下: public final class String implements java.io.Seria ...
- 探秘Java中的String、StringBuilder以及StringBuffer(转载)
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...
- string,stringbuilder,stringbuffer用法
总结:1.如果要操作少量的数据用 = String ==================================>字符串常量2.单线程操作字符串缓冲区 下操作大量数据 = Strin ...
随机推荐
- SpringBoot(二)_项目属性配置
修改端口 在main/resources/application.properties修改端口 server.port=8088 此时启动访问localhost:8088/hello 就会看到 Hel ...
- csdn阅读更多需要注册登录csdn
csdn目前设置每日使用5次后必须登录才能看到阅读更多的内容,异常恶心.因此搜罗了方法去解决这个问题 方法一 打开想看的csdn后,在console里边执行以下代码: $("div.arti ...
- 《前端之路》之 webpack 4.0+ 的应用构建
目录 一.版本 二.webpack 的主体概念 2-1.入口 2-1-1.单页面入口 2-1-2.多页面应用的入口 2-2.输出 2-3.loader 2-4.plugins 三.如何使用 3-1 关 ...
- 什么是ZooKeeper?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...
- CBC 字节反转攻击
一.CBC 简介 现代密码体制 现代密码中的加密体制一般分为对称加密体制(Symmetric Key Encryption)和非对称加密体制(Asymmetric Key Encryption).对称 ...
- 在阿里云服务器中用IP连接SQLserver2014提示40,53错误
在有些时候我们需要他人来连接我们的数据库,这个时候我们需要用我们本地的IP地址来连接,在连接的过程中可能会出现找不到网络路径提示40,53的错误 解决方案: 1.打开配置管理器 2.点开网络配置,点击 ...
- Sql的分库分表,及优化
对Sql细节优化 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 首先给大家介绍一下分库分表 分库分表 分库 垂直分库 业务 ...
- 在已有的Asp.net MVC项目中引入Taurus.MVC
Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...
- MVC图片上传详解
MVC图片上传--控制器方法 新建一个控制器命名为File,定义一个Img方法 [HttpPost]public ActionResult Img(HttpPostedFileBase shangch ...
- PLM与企业信息化
http://blog.itpub.net/31532639/viewspace-2199409/ PLM的发展历史及其与PDM的关系 在ERP.SCM.CRM以及PLM这4个系统中,PLM ...