黑马程序员技术交流社区

标题: string、stringbuffer和stringbuilder区别 [打印本页]

作者: 三生石    时间: 2014-3-5 16:51
标题: string、stringbuffer和stringbuilder区别
String是一个字符串对象
StringBuffer是一个可以操作的字符串。
StringBuilder跟StringBuffer操作是一样的,StringBuffer里面有锁,是线程安全的。StringBuffer没有锁,但是运行速度快。
所以单线程的时候使用StringBilder 多线程的时候StringBuffer
不是很理解这三个,求大神指导!

作者: 赵文超    时间: 2014-3-5 17:25
本帖最后由 赵文超 于 2014-3-5 17:28 编辑

String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String. 如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下
Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
Java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

作者: volvoxc    时间: 2014-3-5 18:03
简单的说,String是一个类,这个类描述的是字符串,它的每个对象都是一个字符串。StringBuffer和StringBuiler当然也是类,也可叫做容器,他们的主要功能就是存储String类的对象。




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