黑马程序员技术交流社区

标题: StringBuffer有关问题 [打印本页]

作者: 光脚丫的小白兔    时间: 2013-10-8 21:28
标题: StringBuffer有关问题
在StringBuffer可以用append方法来连接拼装字符串,也可以str1+str2的形式,
实例化下StringBuffer这个类然后在调用append这个方法去拼装字符串有什么好处
作者: 小痞痞    时间: 2013-10-8 21:46
StringBuffer append(int x);可以将基本数据类型和引用类型数据添加到缓冲区,将数据添加到缓冲区的末尾,数据追加,其实底层是把所有的数据类型转换成了字符存储到缓冲区
而str1+str2是字符串相加产生新的字符串
这样str1和str2就产生了新的字符而str1和str2就变成垃圾等待jvm的垃圾回收了
产生的垃圾越多程序的速度就会变慢从而影响程序的执行速度
StringBuffer的效率比String的效率高很多

作者: 奋斗@zbt    时间: 2013-10-8 21:57
StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。
作者: jìng╮煜    时间: 2013-10-8 22:13
好处多了去了.把一个个零碎的添加进缓冲区,然后再一次性输出.楼上的说到了重点,这我也是没想到的.
还有StringBuffer是线程安全的.
作者: 雪人    时间: 2013-10-9 07:02
以后你要是一看到神马buffter,立马相当想到缓冲区~~
StringBuffer就是对字符串在缓冲区里面操作,这个效率嘛肯定杠杠的.貌似内存只占1个地方.
对于str1+str2这就是两个字符串连一起了,产生一个新的,在内存中占了3个地方.
虽然两者的结果是一样的,但是效率就差很多了.

其实我很少用StringBuffer,多数我都用StringBuilder.后者效率更高~!不过就是线程是不安全的.不过木有关系,以后线程安全问题再自己搞定不就得了,速度得跟得上才行,这样用户体验才会好~
作者: To    时间: 2013-10-9 08:45
如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
作者: qushuai    时间: 2013-10-10 11:30
用+ 号的 话 是产生一个新的对象, 使用StringBuffer 的append()方法是将新的字符串添加到缓冲区的末尾
作者: 张运    时间: 2013-10-10 11:46
String类是不可变的类,一旦一个string对象被创建之后,包含在这个对象的字符序列式不可变的。
StringBuffer则代表一个字符序列可变的字符串,通过StringBuffer提供的append、insert、reverse等方法可以改变这个字符串对象的字符序列。
StringBuilder类:和StringBuffer基本相似,不同的是,StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。
在连接字符串的时候后者则相当于一个容器,在我们追加数据的时候,就相当于向容器里放东西一样,不需要创建新的String对象,提高性能。




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