- 浏览: 145150 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhongfenglin:
...
应聘时最漂亮的回答! 留着 早晚用的上 -
叶枫青:
请问这path设定的具体意思是?可否详细介绍下,谢……(粗略估 ...
J2EE项目从myeclipse中转换到eclipse中 -
starboyss:
...
SpringMVC中model,modelMap.request,session取值顺序 -
xiaomaha:
ejb3.0 webservice如何处理懒加载?没有类似we ...
最近一些J2EE bug总结 -
muqingren:
...
SpringMVC中model,modelMap.request,session取值顺序
http://hi.baidu.com/%B0%A2%CD%E1%CB%B5/blog/item/f9b0364a17a11dfa83025cd5.html
String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
1.它是引用类型,在堆上分配内存
2.运算时会产生一个新的实例
3.String 对象一旦生成不可改变(Immutable)
3.定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)
下面是栽抄的一个StringBuilder 类的说明:
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
设置容量和长度
虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。以下代码示例指定可以将 MyStringBuilder 对象扩充到最大 25 个空白。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用读/写 Capacity 属性来设置对象的最大长度。以下代码示例使用 Capacity 属性来定义对象的最大长度。
[C#]
MyStringBuilder.Capacity = 25;
EnsureCapacity 方法可用来检查当前 StringBuilder 的容量。如果容量大于传递的值,则不进行任何更改;但是,如果容量小于传递的值,则会更改当前的容量以使其与传递的值匹配。
也可以查看或设置 Length 属性。如果将 Length 属性设置为大于 Capacity 属性的值,则自动将 Capacity 属性更改为与 Length 属性相同的值。如果将 Length 属性设置为小于当前 StringBuilder 对象内的字符串长度的值,则会缩短该字符串。
修改 StringBuilder 字符串
下表列出了可以用来修改 StringBuilder 的内容的方法。
方法名 使用
StringBuilder.Append 将信息追加到当前 StringBuilder 的结尾。
StringBuilder.AppendFormat 用带格式文本替换字符串中传递的格式说明符。
StringBuilder.Insert 将字符串或对象插入到当前 StringBuilder 对象的指定索引处。
StringBuilder.Remove 从当前 StringBuilder 对象中移除指定数量的字符。
StringBuilder.Replace 替换指定索引处的指定字符。
Append
Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
此示例将 Hello World! What a beautiful day. 显示到控制台。
AppendFormat
AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法将一个设置为货币值格式的整数值放置到 StringBuilder 的结尾。
[C#]
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
此示例将 Your total is $25.00 显示到控制台。
Insert
Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。
Remove
可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例将 Hello 显示到控制台。
Replace
使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 ( ) 来替换它们。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', ' ');
Console.WriteLine(MyStringBuilder);
String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
1.它是引用类型,在堆上分配内存
2.运算时会产生一个新的实例
3.String 对象一旦生成不可改变(Immutable)
3.定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)
下面是栽抄的一个StringBuilder 类的说明:
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
设置容量和长度
虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。以下代码示例指定可以将 MyStringBuilder 对象扩充到最大 25 个空白。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用读/写 Capacity 属性来设置对象的最大长度。以下代码示例使用 Capacity 属性来定义对象的最大长度。
[C#]
MyStringBuilder.Capacity = 25;
EnsureCapacity 方法可用来检查当前 StringBuilder 的容量。如果容量大于传递的值,则不进行任何更改;但是,如果容量小于传递的值,则会更改当前的容量以使其与传递的值匹配。
也可以查看或设置 Length 属性。如果将 Length 属性设置为大于 Capacity 属性的值,则自动将 Capacity 属性更改为与 Length 属性相同的值。如果将 Length 属性设置为小于当前 StringBuilder 对象内的字符串长度的值,则会缩短该字符串。
修改 StringBuilder 字符串
下表列出了可以用来修改 StringBuilder 的内容的方法。
方法名 使用
StringBuilder.Append 将信息追加到当前 StringBuilder 的结尾。
StringBuilder.AppendFormat 用带格式文本替换字符串中传递的格式说明符。
StringBuilder.Insert 将字符串或对象插入到当前 StringBuilder 对象的指定索引处。
StringBuilder.Remove 从当前 StringBuilder 对象中移除指定数量的字符。
StringBuilder.Replace 替换指定索引处的指定字符。
Append
Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
此示例将 Hello World! What a beautiful day. 显示到控制台。
AppendFormat
AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法将一个设置为货币值格式的整数值放置到 StringBuilder 的结尾。
[C#]
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
此示例将 Your total is $25.00 显示到控制台。
Insert
Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。
Remove
可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例将 Hello 显示到控制台。
Replace
使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 ( ) 来替换它们。
[C#]
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', ' ');
Console.WriteLine(MyStringBuilder);
发表评论
-
maven中jar包冲突异常
2016-10-09 13:18 0ava.lang.NoSuchMethodError: org ... -
安装redis2.8时必须安装c/c++
2014-08-20 17:39 0安装C/C++的编译组件(非必须) apt-get insta ... -
java中split方法使用总结
2013-10-17 23:56 0韩版2013秋装新款女T恤纯色长袖长款女T恤DN1116叁柒【 ... -
java.lang.OutOfMemoryError: Java heap space 的解决
2013-07-15 09:22 0java.lang.OutOfMemoryError: Jav ... -
通过url抓取第三方的内容
2012-08-14 11:06 1018大家看到标题都会想到用HttpURLConnection ... -
freemarker的web项目学习
2012-07-29 21:04 0http://duooluu.iteye.com/blog/2 ... -
SpringMVC中输出json格式数据,以及@ResponseBody的问题
2012-07-29 20:19 0转[url] http://blog.csdn.net/a ... -
java字符串应用之IP地址转换成整数 转
2012-07-28 12:35 1309转 http://blog.csdn.net/xxxxxx ... -
获取访问站点用户的IP地址
2012-07-28 12:27 1020转http://lidaoping12345.iteye.co ... -
递归总结
2012-04-05 18:33 01.递归获取前几条数据,则要用返回值的方式才可以,否则并行的节 ... -
java处理日期格式大全Date format SimpleDateFormat资料参考
2012-04-05 18:32 5911参考 http://blog.csdn.net/ ... -
Failed to create the Java Virtual Machine
2012-04-05 18:25 1096来自 http://apps.hi.baidu.com/sha ... -
eclipse打jar包
2012-02-03 18:14 1149参考http://apps.hi.baidu.com/shar ... -
面试题
2011-09-15 22:26 0微软十五道面试题 1、 ... -
JRedis学习
2011-08-19 18:19 0使用jredis连接redis服务器端,主要有两种方式,参考代 ... -
学习技术总结
2011-08-19 10:53 01.web页面的加载顺序,jsp,js,css 2.selec ... -
键盘数字对应的ASCII码和keycode码
2011-07-07 14:27 3874转载http://hi.baidu.com/dongtianx ... -
dom4j读取xml
2011-03-24 18:23 928转载http://shaqiang32.iteye.com/b ... -
最近一些J2EE bug总结
2011-02-25 13:33 2307JavaEE项目中bug总结 一. java.lang.N ... -
java基本类型变量和对象学习总结
2011-02-18 14:58 0八种基本类型变量,字符类型char,布尔类型boolea ...
相关推荐
在StringBuilder类的源码中,我们可以看到,它的扩容机制与StringBuffer类相同,也是以16为单位进行扩容的。 String、StringBuffer和StringBuilder的比较 通过上面的分析,我们可以看到,String类的字符串是不可变...
### JavaSE之StringBuilder类与String类 #### 一、String类概述 在Java语言中,`String`类是非常重要的一个类,它代表了不可变的字符序列,即一旦创建了一个`String`对象,其内容就不能被修改。由于`String`类的不...
### String和StringBuilder类的区别 在.NET框架中,`String` 和 `StringBuilder` 是两种非常重要的字符串处理类。尽管它们都能用来表示和操作文本数据,但它们之间存在显著的区别,主要体现在内存使用、性能表现...
在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...
本文将深入探讨字符串、String类以及StringBuilder类,帮助你更好地理解和应用这些基础知识。 首先,我们关注的是String类。在C#中,String类是不可变的,这意味着一旦一个字符串对象被创建,它的内容就不能被改变...
在Java编程语言中,`String`、`...理解`String`、`StringBuffer`和`StringBuilder`的区别和使用场合,可以帮助开发者写出更高效、更安全的代码。在实际开发中,应根据项目需求和环境选择合适的字符串处理类。
day09【API、String类、StringBuilder类】 本节课程主要介绍了 API、String 类和 StringBuilder 类的相关知识点。 API 概述 API(Application Programming Interface)即应用程序编程接口,提供了一种访问底层...
String:字符串常量 StringBuffer:字符创... StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
StringBuilder类的出现是为了解决String类的不可变性问题,每次使用String类中的方法时,都需要在内存中创建一个新的字符串对象,这增加了系统开销。StringBuilder类的出现解决了这个问题,提供了高效的字符串操作...
StringBuilder 类与 String 类的区别 StringBuilder 类和 String 类都是 Java 中的字符串类,但是它们有着很大的不同。String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象,...
String, StringBuffer 与 StringBuilder 的区别 在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String ...
与String不同,String对象的长度是固定的,一旦创建,其内容无法改变,每次对字符串进行修改都会生成新的对象,这在处理大量字符串拼接时会显著降低程序效率。而StringBuilder则提供了可变字符串的功能,它允许我们...
StringBuilder 类型是可变的对象,提供了与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。StringBuilder 在大多数实现中比 ...
在Java编程语言中,String、StringBuffer和StringBuilder都是用来处理字符串的重要类,它们各自有特定的使用场景和特性。理解这三个类的区别对于任何Java开发者,无论是初学者还是经验丰富的程序员,都是非常重要的...
`StringBuilder`是`JDK 5.0`引入的新类,它是`StringBuffer`的一个轻量级替代品,主要区别在于`StringBuilder`不是线程安全的。这意味着在单线程环境下,`StringBuilder`的操作速度通常会比`StringBuffer`更快,因为...
在Java编程语言中,`String`和`StringBuilder`都是用于处理字符串的重要类,但它们在处理方式和效率上有显著的区别。本资源中的代码是针对这两种类的效率进行测试的实例,旨在帮助开发者理解它们在不同场景下的性能...
与String类不同,StringBuilder是一个可变的对象,这意味着我们可以在已有的字符串基础上进行添加、删除、修改等操作,而无需创建新的字符串对象。这种特性在处理大量字符串拼接或动态构建字符串时非常有用,因为...
《Java中的StringBuffer与StringBuilder类详解》 在Java编程中,当我们需要对字符串进行多次修改时,StringBuffer和StringBuilder类成为首选。这两个类提供了一种高效且灵活的方式来处理字符串,与不可变的String类...
`StringBuilder`类是专为处理字符串拼接设计的,它提供了一个可变的字符序列,可以在不创建新对象的情况下进行多次追加操作。在循环或大量拼接场景下,`StringBuilder.Append()`方法的性能显著优于`+`和`String....