黑马程序员技术交流社区

标题: String,StringBuffer和StringBuilder的区别? [打印本页]

作者: 杨基米德    时间: 2015-7-7 07:16
标题: String,StringBuffer和StringBuilder的区别?
大神来看看具体给说说呗~
作者: zhuoxiuwu    时间: 2015-7-7 07:46
String: String是字符串常量 ,它是一个基本类型,字符串是不可变
可以从String.class 中找到这么一个属性
/** The count is the number of characters in the String. */
private final int count;
因为count 属性被设置为final,一旦实例化之后当然就不需要 改变了

StringBuffer与 StringBulider

StringBuffer是在jdk1.0出现的,果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。

StringBuffer 是线程安全的,可以从StringBuffer类中的代码看到

public synchronized StringBuffer append(StringBuffer sb) {
        super.append(sb);
        return this;
    }
StringBulider 是StringBuffer的一个简易版,它是线程不安全
我对着3个的一个使用理解:

如果你是要操作少量的数据,直接用String就可以了,

如果在单线程中操作大量数据,用StringBuilder ;

在多线程操作大量数据,当然用StringBuffer,保证了线程的安全。
作者: nanfp    时间: 2015-7-7 12:26
楼上讲解的很详细  赞一个!!!
作者: 小虎199406    时间: 2015-7-7 13:03
String 字符串常量,长度不可变 ,StringBuffre是字符串缓冲区存储容易,用于缓冲存储字符串进行添加删除等操作,StringBuilder是一个单线程的安全的StringBuffer,操作与StringBuffer类似但常用首选的是BufferBulider
作者: 357955778    时间: 2015-7-7 19:55
2楼讲解的好详细,学习了!
作者: guoningyan    时间: 2015-7-7 21:32
喜欢二楼的详解
作者: 杨基米德    时间: 2015-7-7 21:37
zhuoxiuwu 发表于 2015-7-7 07:46
String: String是字符串常量 ,它是一个基本类型,字符串是不可变
可以从String.class 中找到这么一个属性
...

多谢:handshake
作者: ssclovedan    时间: 2015-7-7 21:40
String是不能变的字符串,StringBuffer是字符串缓冲区,是可变的




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