A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 光脚丫的小白兔 中级黑马   /  2013-10-8 21:28  /  1516 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在StringBuffer可以用append方法来连接拼装字符串,也可以str1+str2的形式,
实例化下StringBuffer这个类然后在调用append这个方法去拼装字符串有什么好处

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

7 个回复

倒序浏览
StringBuffer append(int x);可以将基本数据类型和引用类型数据添加到缓冲区,将数据添加到缓冲区的末尾,数据追加,其实底层是把所有的数据类型转换成了字符存储到缓冲区
而str1+str2是字符串相加产生新的字符串
这样str1和str2就产生了新的字符而str1和str2就变成垃圾等待jvm的垃圾回收了
产生的垃圾越多程序的速度就会变慢从而影响程序的执行速度
StringBuffer的效率比String的效率高很多

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
好处多了去了.把一个个零碎的添加进缓冲区,然后再一次性输出.楼上的说到了重点,这我也是没想到的.
还有StringBuffer是线程安全的.
回复 使用道具 举报
以后你要是一看到神马buffter,立马相当想到缓冲区~~
StringBuffer就是对字符串在缓冲区里面操作,这个效率嘛肯定杠杠的.貌似内存只占1个地方.
对于str1+str2这就是两个字符串连一起了,产生一个新的,在内存中占了3个地方.
虽然两者的结果是一样的,但是效率就差很多了.

其实我很少用StringBuffer,多数我都用StringBuilder.后者效率更高~!不过就是线程是不安全的.不过木有关系,以后线程安全问题再自己搞定不就得了,速度得跟得上才行,这样用户体验才会好~

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

回复 使用道具 举报
To 金牌黑马 2013-10-9 08:45:42
地板
如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
回复 使用道具 举报
qushuai 中级黑马 2013-10-10 11:30:18
7#
用+ 号的 话 是产生一个新的对象, 使用StringBuffer 的append()方法是将新的字符串添加到缓冲区的末尾
回复 使用道具 举报
张运 高级黑马 2013-10-10 11:46:31
8#
String类是不可变的类,一旦一个string对象被创建之后,包含在这个对象的字符序列式不可变的。
StringBuffer则代表一个字符序列可变的字符串,通过StringBuffer提供的append、insert、reverse等方法可以改变这个字符串对象的字符序列。
StringBuilder类:和StringBuffer基本相似,不同的是,StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。
在连接字符串的时候后者则相当于一个容器,在我们追加数据的时候,就相当于向容器里放东西一样,不需要创建新的String对象,提高性能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马