- 1
- 0
- 约2.79千字
- 约 3页
- 2017-11-20 发布于北京
- 举报
String、StringBuffer和StringBuild的区别与联系
String、StringBuffer和StringBuilder的区别
String 类分别用于实现 IComparable、ICloneable、IConvertible、IEnumerable 和 IComparable 接口。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。
String 类提供的成员执行以下操作:比较 String 对象;返回 String 对象内字符或字符串的索引;复制 String 对象的值;分隔字符串或组合字符串;修改字符串的值;将数字、日期和时间或枚举值的格式设置为字符串;对字符串进行规范化。
使用 Compare、CompareOrdinal、CompareTo、Equals、EndsWith 和 StartsWith 方法进行比较。
使用 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 方法可获取字符串中子字符串或 Unicode 字符的索引。
使用 Copy 和 CopyTo 可将字符串或子字符串复制到另一个字符串或 Char 类型的数组。
使用 Substring 和 Split 方法可通过原始字符串的组成部分创建一个或多个新字符串;使用 Concat 和 Join 方法可通过一个或多个子字符串创建新字符串。
使用 Insert、Replace、Remove、PadLeft、PadRight、Trim、TrimEnd 和 TrimStart 可修改字符串的全部或部分。
使用 ToLower、ToLowerInvariant、ToUpper 和 ToUpperInvariant 方法可更改字符串中 Unicode 字符的大小写。
使用 Format, 可将字符串中的一个或多个格式项占位符替换为一个或多个数字、日期和时间或枚举值的文本表示形式。
使用 Length 属性可获取字符串中 Char 对象的数量;使用 Chars 属性可访问字符串中实际的 Char 对象。
使用 IsNormalized 方法可测试某个字符串是否已规范化为特定的范式。使用 Normalize 方法可创建规范化为特定范式的字符串。
StringBuilder 类此类表示值为可变字符序列的类似字符串的对象。之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后可以对它进行修改。
StringStringBuilder、StringBuffer的区别:
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,创建新的 String 对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
3. 字符串是 Unicode 字符的连续集合,通常用于表示文本,而 String 是表示字符串的 System.Char 对象的连续集合。String 的值构成该连续集合的内容,并且该值是恒定的。由于 String 的值一旦创建就不能再修改,所以称它是恒定的。看似能修改 String 的方法实际上只是返回一个包含修改内容的新 String。
Unicode字符序列,允许并发操作,是线程安全的
例:对于字符串连接String?str?=?A?+?B?+?C?+?D;
产生:AB、ABC、ABCD
在串池中产生的AB、ABC明显是多余对象,浪费空间。
解决方案:
String?s?=?null;
StringBuffer?sb?=?new?StringBuffer(A);
sb.append(B);
sb.append(C);
sb.append(D);
s?=?sb.toString();
5. StringBuilder:可改变的Unicode字符序列操作同StringBuffer,只是不支持并发操作,非线程安全的
6. 不考虑线程安全前提下,StringBuild性能最高,StringBuffer次之,String比较差.
为什么StringBuffer的性能比String高?主要原因在于String类是不可变类,任何对String引用指向的字符串作出的修改都会导致生成新的字符串(对象),而对StringBuffer的修改则不会导致新对象的产生。大家都知道,生成新对象是十分耗时的事情,自然导致对String对象的修改性能下降不少。
那么为什么StringBuilder的性能比StringBuf
您可能关注的文档
- js实现php函数urlencode.doc
- JS代码判断浏览器版本支持IE6IE7IE8IE9.doc
- JS教程-JavaScript最佳实践性能.docx
- js滚动代码、向上滚动、向下滚动、向左滚动向右滚动广告代码.doc
- js的函数语句作用域运算符.doc
- JS中window对象的open和openDialog方法使用.doc
- J组《有理数的乘方》讨论结果.doc
- K3智能机的刷机组合键硬起组合键集合.doc
- Karmdg法语学习资料关于体育运动的基本词汇.doc
- KBT-220E单相电源防雷插座原理使用说明书[科比防雷厂家].doc
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
原创力文档

文档评论(0)