String与StringBuilder
来源:互联网 发布:绣春刀2影评知乎 编辑:程序博客网 时间:2024/05/16 00:56
前言
String:表示不可变字符字符串。
StringBuilder:表示可变字符字符串。
String类型的值不可改变,每次对其操作都会返回一个新的String对象。
StringBuilder是一个可变的字符串类,一旦创建类的实例后,可以对其进行添加,修改,替换,删除等操作。
使用String的情况
- 程序中对字符串进行的更改的数量很小。这种情况下StringBuilder对系统性能的改善可以忽略不计或者没有改善。
- 程序需要执行固定数量字符串串联运算。使用String时,编译器更容易执行。
- 需要对正在构建的字符串执行广泛的搜索操作。因为StringBuilder缺少String本身的搜索方法,如:IndexOf和StartWith。你必须将StringBuilder转换为String对象,这样会消除StringBuilder本身的优势。
使用StringBuilder的情况
- 在设计时,预料到你的程序会进行未知数目的字符串更改。
- 你的程序需要对某个字符串进行已知数量的更改操作,而这种更改数量较大(自行判断)。
StringBuilder的工作原理
当实例化时未指定其初始容量和最大容量时。默认初始容量为16个字符,最大容量为Int32.MaxValue。如果为一个StringBuilder对象添加字符后超过了16个字符的初始容量,那么这个对象的容量会自动扩展至32个字符,如果32个字符还不够,它就会扩展到64个字符,也就是说它的每一次扩容都是在当前容量的基础上翻倍,至到足够存储添加后的字符串为止(不能大于Int32.MaxValue)。如果在未设置其最大容量时,StringBuilder对象超过Int32.MaxValue, 会引发ArgumentOutOfRangeException 或 OutOfMemoryException 异常。当然也可以通过初始化设置StringBuilder对象的初始值和最大值,这样就可以添加超过Int32.MaxValue大小的字符串了。不过,一般当我们追加小型字符串的时候才会设置初值(默认初始容量和最大容量),这样系统会分配更小的初始容量(或更精确的容量)。
总结
以上内容均来自MSDN,简单的整理了一下来梳理思路。StringBuilder的修改方法并没有在文中列出,可参考MSDN,里面有很详细的讲解。另外,当创建两个内容相同的字符串时,它们的实例是相同的,下面代码的返回值为True。
string stringA = "msdn"; string stringB = "msdn"; Console.WriteLine(Object.ReferenceEquals(stringA,stringB));
阅读全文
1 1
- String与StringBuilder 辩议
- String 与StringBuilder区别
- StringBuilder与String
- string 与StringBuilder区别
- String与StringBuilder
- String 与 StringBuilder
- String与StringBuilder关系
- String,StringBuffer与StringBuilder
- String,StringBuffer与StringBuilder
- String,StringBuffer与StringBuilder
- string与stringBuilder
- string 与 stringBuilder
- String与StringBuilder
- String,StringBuffer与StringBuilder
- String, StringBuffer与StringBuilder
- String,StringBuffer与StringBuilder
- C# - String与StringBuilder
- String 与StringBuilder
- 二级列表
- 知识点
- 项目开发中如何写说明文档
- Hbase--shell
- C
- String与StringBuilder
- 《大话设计模式》Python版代码实现
- 一日一文(3)
- 记一次apache错误日志一直出现“child pid 4134 exit signal Segmentation fault (11)”问题
- 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)-----基于JAVA语言
- 知识点
- 最小公倍数和最大公约数
- tensorflow实现车牌识别
- android替换Glide通讯组件为Okhttp并监控加载进度