黑马程序员技术交流社区

标题: stringbuilder与字符串型有什么区别? [打印本页]

作者: 咪咪    时间: 2011-11-15 20:49
标题: stringbuilder与字符串型有什么区别?
stingbuilder是属于string类吗?
作者: 咪咪    时间: 2011-11-15 20:50
是与字符串型数组有什么区别
作者: 梦女孩    时间: 2011-11-15 23:19
不是字符串数组 是CharSequence。
String StringBuilder StringBuffer 都是实现了CharSequence接口的字符序列。
作者: 王德云    时间: 2011-11-15 23:58
1.String 对象是不可改变的。都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,创建新的 String 对象相关的系统开销可能会非常昂贵。
2.StringBuilder:可改变的Unicode字符序列操作同StringBuffer,只是不支持并发操作,非线程安全的。不考虑线程安全建议使用StringBuilder
作者: zhou_411424    时间: 2011-11-16 07:24
String 字符串常量
StringBuffer 字符串变量(线程安全)

String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响。 特别是字符串对象经常改变的情况下,一般情况下我们推荐使用 StringBuffer。

大部分情况下StringBuffer要好于String
StringBuffer是线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

使用场合:
如果要操作少量的数据用String
多线程操作字符串缓冲区下操作大量数据StringBuffer




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