纯属个人总结
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
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

本文探讨了Java中String、StringBuilder与StringBuffer的性能差异,重点分析了不同场景下这些类别的适用性,包括单线程与多线程环境下的最佳实践。
3267

被折叠的 条评论
为什么被折叠?



