黑马程序员技术交流社区
标题:
StringBuffer,string,stringBuilder什么区别
[打印本页]
作者:
宗士为
时间:
2012-5-7 17:17
标题:
StringBuffer,string,stringBuilder什么区别
还是有点不明白 这个的区别 大虾们 都说说呗 小生谢过
作者:
谭景宾
时间:
2012-5-7 17:38
String 是不可变字符串,即String提供的字符串是不可变的.
而StringBuffer和StringBuilder提供的字符串是可变的,可进行修改的,可以用他么来动态构造字符数据,
而StringBuffer和StringBuilder在于StringBuffer是线程安全的,而StringBuffer是线程不安全的
作者:
黑马张立国
时间:
2012-5-7 17:55
StringBuffer,string,stringBuilder什么区别
string 是字符串;
String[]是字符串数组,数组一但定义就不能改变大小,
如String 【】 arr= new String(8),那么就只能装8个元素。
为了能装不确定的元素,就出来了StringBuffer和stringBuilder
但是当面对多线程时,就会出现安全问题;
StringBuffer是安全的,效率低,同步(底层帮你实现了同步)
stringBuilder是不安全的,高效的,不同步(需要自己实现同步)
不知你明白了吗
作者:
林豪
时间:
2012-5-7 18:01
String 是一个对象,对他赋值后就不可变了,好像final修饰
StringBuffer是一个缓冲区,就像放东西的容器,能改能删能放,线程是同步的
StringBuilder是StringBuffer的改良版,线程不同步,不过自己加个锁就同步了
作者:
隋营营
时间:
2012-5-7 19:11
通过两个字符串相加来说明这个问题:
"black"
与
"horse"
相加赋值给新的变量
succeed
若用String存储字符串,则在相加过程中会有一块内存区域用于存放字符串相加后的结果,然后把这个结果赋值给succeed
若用StringBuffer存储字符串,则直接在"black"后追加字符串"horse"(存放"black"的内存空间扩充)然后把最后的值赋给succeed
显然StringBuffer的效率要高些
StringBuilder与StringBuffer类似,只是不能保证线程同步,因此大多数方法比StringBuffer快
2012-05-07_190233.png
(40.37 KB, 下载次数: 44)
下载附件
2012-5-7 19:02 上传
作者:
韩慧阳
时间:
2012-5-7 19:25
String类用来表示那些创建后就不会改变的字符串。
StringBuffer类用来表示那些内容可变的字符串,并提供了修饰底层字符串的方法。
当要进行字符拼接时候,使用StringBuffer类要比使用String快很多。
举个例子:String str="123";str+="abc"; (一)
StringBuffer str=new StringBuffer("123");str.append("abc"); (二)
这两行的作用是相同的。但是在(一)执行时JVM会创建一个临时的StringBuffer对象,并调用append()方法完成拼接,因为String类是不可变的。完成后再将这个临时对象转成String,所以要耗费很多资源和时间。
而StringBuffer与StringBuilder的区别主要是前者是线程安全的,就是说它是同步的;后者不安全,不是同步的,其它的区别不大。当你的程序不需要线程同步,一般都用StringBuilder.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2