0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# String,StringBuffer,StringBuilder的区别

1.主要区别:

String 是不可变的字符串,线程安全的

StringBuffer 是可变的字符串,线程安全的

StringBuilder是可变的字符串,线程不安全的。

在大部分情况下,字符串拼接速度为:StringBuilder>StringBuffer>String

2.实现代码:

public class Test1 {

public static void main(String[] args) {
String string="String";

StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append(string+"Buffer");

StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append(string+"Builder");

System.out.println("String:"+string);
System.out.println("StringBuffer:"+stringBuffer);
System.out.println("StringBuilder:"+stringBuilder);

}
}

3.选择场景:

1.如果要操作少量的数据用 String

2.单线程操作字符串缓冲区 下操作大量数据  StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 StringBuffer


要提高字符串拼接速度:因为字符串拼接速度为:StringBuilder>StringBuffer>String

因为String是不可变的,因此每次对其操作改变其变量值时,都是重新生成一个新的对象,只是把变量引用指向了新对象而已,所以速度是比较慢。


对StringBuffer操作其实是直接操作对象指向的引用,不用产生新的对象,速度很快,是线程安全的,但在多线程时,如果要维护多线程的同步的话,那么速度也会变慢。


StringBuilder是jdk5之后新增的,其用法与StringBuffer是一样的,但它是线程不安全的,所以在单线程中,它的速度是最快的。


举报

相关推荐

0 条评论