stirng对象是不可变的,每次使用String类的方法进行运算时(赋值、拼接),都会在内存中生成新的字符串对象,这就要为新对象分配新的内存空间。

StringBuilder 实例的 int Capacity属性,它表示内存中为存储字符串而物理分配的字符串总数。该数字为当前实例的容量。当字符串操作的结果大于当前的容量时,该属性的值会自动增长。增长的幅度为当前数值的2倍。(.NET Framework中可变集合类如ArrayList 的Capacity 属性也类似这种自动分配机制)

公共语言运行时通过维护一个表来存放字符串,该表称为“暂存池”,它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用。因此,具有特定值的字符串的实例在系统中只有一个

参考:

  http://www.cnblogs.com/Qbit/archive/2011/05/04/2037074.html

  http://blog.csdn.net/qiaoquan3/article/details/51202926

.NET 中String 和StringBuilder 以及他们的区别的更多相关文章

  1. Java中String、StringBuilder、StringBuffer的区别

    常量还是变量: String是字符串常量(以final修饰符进行修饰,不可更改): StringBuilder是字符串变量 StringBuffer是字符串变量 线程安全: String无所谓线程安全 ...

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

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

  3. java 中String与StringBuilder 效率

    之前印象中string与stringbuilder操作时,如果多次改变string就使用stringbuilder,效率会提高: 今天实际遇到了问题,亲身经历过之后,这性能不是一般的影响啊:不是同一个 ...

  4. String、StringBuilder和StringBuffer的区别

    1         String.StringBuilder和StringBuffer的区别 String.StringBuilder.StringBuffer都可以用来保存字符串.如果是使用次数比较 ...

  5. 面试必知:String、StringBuilder、StringBuffer的区别

    你知道String.StringBuilder.Stringbuffer的区别吗?当你创建字符串的时候,有考虑过该使用哪个吗? 别急,这篇文章带你解决这些问题. 可变性 首先,String是字符串,我 ...

  6. JAVA String介绍、常量池及String、StringBuilder和StringBuffer得区别. 以及8种基本类型的包装类和常量池得简单介绍

    一.概述 String是代表字符串的类,本身是一个最终类,使用final修饰,不能被继承. 二.定义方式   方式一:直接赋值法 String str1 = "hello"; 方式 ...

  7. C# 中 string.Empty、""、null的区别

    原文C# 中 string.Empty."".null的区别 一.string.Empty 和 "" 1.Empty是string类中的一个静态的只读字段,它是 ...

  8. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  9. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

随机推荐

  1. PHP 获取星期

    <?php function getWeek($time = 0) { $week_array=array('日', '一', '二', '三', '四', '五', '六'); //先定义一个 ...

  2. docker安装nginx , 安装mysql5.6,安装redis3.2

    安装nginx 拉取镜像 docker  pull nginx 查看镜像 docker  images 创建多个目录 mkdir -p  /data/nginx/{conf,conf.d,html,l ...

  3. Fiddler抓包工具如何可以抓取HTTPS

  4. Java开发笔记(一百二十)AWT文本标签

    前面介绍了AWT窗口及其面板的简单用法,其中展示出来的控件只有按钮一种,还有很多好用好玩的控件有待介绍.首先是文本标签Label,该控件用于显示一段平铺文本,它不花哨也不跳动,完全就是素面朝天的文本字 ...

  5. TensorFlow学习笔记(1)—— 基本概念与框架

    入门框架时的常见问题 学习框架的原因? 方便.易用 学习框架的哪些知识点? 掌握一个项目的基本流程,就知道需要学习哪些知识点了 迅速学习框架的方法 根据项目每块流程的需要针对性的学 可以看官方的入门教 ...

  6. Linux iptables常用防火墙规则

    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机) iptables -A INPUT -m stat ...

  7. PXC安装部署

    安装依赖与注意事项:   1. rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 1 ...

  8. 环境配置--升级Python 3.6爬坑

    升级到3.6之后,发现ctrl alt t呼不出命令台,找了半天发现update manager也打不开,而且没有错误报告.....查阅了一番资料看到有人有类似的问题(https://askubunt ...

  9. docker postgres 导出导入数据

    导出 -s  选项用来只导出表结构,而不会导出表中的数据 -t   选项用来指定要导出的数据库表 格式:docker exec -ti 容器名 pg_dump -U 用户名 -s -t table_n ...

  10. c# Path.Combine

    Path.Combine: c#获取当前项目路径 : //获取包含当前执行的代码的程序集的加载文件的完整路径 var appPath = System.IO.Path.GetDirectoryName ...