黑马程序员技术交流社区

标题: 关于java 中String与StringBuffer [打印本页]

作者: 盖保宁    时间: 2011-9-26 09:18
标题: 关于java 中String与StringBuffer
方老师说StringBuffer是一个容器,可以存储删除获取修改。问大家感到有碰到必须使用stringBuffer的地方吗
用String除了不能翻转基本功能够用了,那StringBuffer一般是在什么情况下建议用呢
作者: 匿名    时间: 2011-9-26 09:22
String再追加字符串的时候效率没有StringBuffer好,因为String追加的时候要重新创建一个String对象,而StringBuffer则是在原先开辟的内存中直接追加,又不重新创建对象
作者: 匿名    时间: 2011-9-26 09:23
Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。 append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
最后的总结:字符串操作的时候应该使用指定容量的StringBuffer!
作者: 匿名    时间: 2011-9-26 09:28
谢谢何德虎的提醒:.StringBuffer线程安全的可变字符序列
作者: 匿名    时间: 2011-9-26 14:08
字符串内容较长的时候,特别是这个字符串是动态拼接的时候,用String可能发生内存不够的错误,这种情况必须用stringbuffer
作者: 梁锡伟    时间: 2011-9-26 14:36
当你觉得用string不对劲的时候,考虑用它或者stringbuilder,不对劲就是经常用+操作符或者字符串太长
作者: 匿名    时间: 2011-9-26 20:44
String类型一旦赋值就不能改变了,但是我们在程序中有时会出现这样的语句[code]String s="abc"; s=s+"d";[/code],这是因为在程序的运行过程中,String 类型的数据先转化成StringBuffer类型,执行后,形成了最终的字符串后,再转换为String 类型。
作者: 匿名    时间: 2011-9-26 23:20
标题: 回复 楼主 的帖子
String是对象不是原始类型,为不可变对象,一旦被建立 ,就不能修改它的值。对于已经存在的String对象的修改都是重新建立一个新的对象。然后把新的值保存进去。
StringBuffer是一个可变对象,当对他执行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立。
很重要的一点String比StringBuffer的效率要低很多!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2