您的位置:首页 > 产品设计 > UI/UE

String、Stringbuffer和Stringbuilder的区别

2018-03-13 21:41 489 查看
纯属个人总结
1.运行速度方面
由快到慢的排列为StringBuilder > StringBuffer > String
原因:
String为字符串的常量,而StringBuilder和StringBuffer为字符串变量。对象一旦创建是不能够更改的,但是变量是可以的。

String str = "abc";
s =s+1;
说明:我们所看到的就是变量发生了改变,但是实际的情况是没有发生改变。为什么这么说呢?
这实际就是一种假象,jvm是这样解释的,首先创建了变量str,赋值为“abc”,在执行第二段代码的时候,jvm又重新的创建了一个变量str,也就是说,原有的str变量时没有改变的,所以说string是不可改变的对象。也是因为这种机制,每次执行的时候都会创建个新的对象,而原来的对象会被GC回收,因此效率很慢。
但是stringbuilder和stringbuffer就不一样了,它们属于字符串变量,是可以改变的。每当我们对字符串进行操作,实际上是对原有的对象进行操作,

stringBuffer和stringBuilder区别
StringBuilder:线程非安全的StringBuffer:线程安全的
当我们字符串缓冲区被多个多线程使用时候,jvm不能保证stringbuilder的操作是安全的,但是能保证stringbuffer是安全的。但是在多数的情况下,我们使用stringbuilder而不使用stringbuffer的原因就是速度问题。

 对于三者使用的总结: 1.如果要操作少量的数据用 = String             2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder<
940b
/p>              3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: