黑马程序员技术交流社区
标题:
String类和StringBuilder类有什么不同
[打印本页]
作者:
上帝的尊严
时间:
2013-12-3 22:52
标题:
String类和StringBuilder类有什么不同
本帖最后由 上帝的尊严 于 2013-12-4 20:29 编辑
String类和StringBuilder类有什么不同,两个类中常用的方法,感觉上没有什么不同啊,难道要在内存上去理解不同么?
作者:
§風過無痕§
时间:
2013-12-4 07:12
由于String 对象的不可改变性。每次使用String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能
比较区别再于:系统内存的开销 运行性能上
作者:
xydsdsr
时间:
2013-12-4 09:07
楼上说的很详细 还有一点 当大量的字符串相加时,每两个之间就会产生一个新的字符串对象,数量一大就很占内存了,而用stringbuilder就不会有这个问题,会在最后你用的时候一起tostring(),中间不生成其他中间对象。
作者:
黑马—严守卫
时间:
2013-12-4 09:26
String 对象不可变性,适用在对字符串更改数量小;大范围的搜索。
StringBuilder 对象在一定大小内动态分配内存,当超出当前容量,也是重新分配内存。适用于大量字符串更改;字符串拼接。
作者:
不明觉厉
时间:
2013-12-4 10:40
string类,与stringBuilder最大的不同就是,当你要在string a 后面添加一些字符串b的时候,实际上,是新创建了一个新字符串 c,然后 c=a+b。
而在stringBuilder中,在创建字符串 a 的时候,会在后面留有一些内存空间,可以直接把要添加的字符串b添加到a 后面,没有创建新字符串,你可以用stringBuilder字符串属性Count,查看字符串长度,而用Capacity查看字符串容量。
stringBuilder就像一个水桶,Count就是当前盛的水,而Capacity就是桶容积
作者:
刘吉烨
时间:
2013-12-4 12:02
String 是不可变的对象,而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作
作者:
大牙到潍坊
时间:
2013-12-4 12:24
虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2