黑马程序员技术交流社区

标题: 同仁们,请问String 和StringBuffer有什么区别? [打印本页]

作者: ██    时间: 2014-6-17 11:06
标题: 同仁们,请问String 和StringBuffer有什么区别?
同仁们,请问String 和StringBuffer有什么区别?
作者: wojiaojay    时间: 2014-6-17 11:08
String长度是不可变分,字符串连接,只能转成StringBuffer,效率太低,而StringBuffer长度可变,可以直接连接多个字符串
作者: ██    时间: 2014-6-17 11:09
wojiaojay 发表于 2014-6-17 11:08
String长度是不可变分,字符串连接,只能转成StringBuffer,效率太低,而StringBuffer长度可变,可以直接连 ...

thank you!!!
作者: 江夷    时间: 2014-6-17 11:26
StringBuffer 和 String的区别?
                StringBuffer: 线程安全的,内容是可变的
                  String: 字符串是常量;它们的值在创建之后不能更改。

作者: Rodgers    时间: 2014-6-17 14:39
①从值是否可变的角度讲。
String一旦定义后其值就不能改变,而StringBuffer相当于一个装字符串的可变容器,可以对装的内容进行增删改查等操作

②从效率的角度讲
StringBuffer的append方法比“+”高效。
字符串连接操作中StringBuffer的效率要比String高:
每次使用String的 "+",都是new了一个新的String 对象,
而StringBuffer 的append()方法,都是在原有的对象上进行的操作,
String str = new String("welcome to ");
str += "here";
的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后
再将StringBuffer toSting();
这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.
并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.
这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.
因此,当需要对字符串进行多次修改时,最好用StringBuffer。

作者: TS__likewise    时间: 2014-6-17 16:57
yistring str = “abc”; str = str+"bcd"; 这样会创建一个新实例str,而不是之前的str了,会导致新对象的生成,少量的追加差别不大,如果数量多的话,StringBuffer(难道不是StringBuilder,Java还是.net)是在同一个实例的基础之上追加,速度快。StringBuilder strb = new StringBuilder();strb.append()   //追加到当前实例上,不会创建新对象




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