StringBuffer,StringBuilder,String的比较

1,991 阅读1分钟

1.执行速度方面的比较

StringBuilder>StringBuffer>String

为什么String的执行速度低?

在java文档中String类对象被称作不可变字符串,对String类对象进行的修改,实际并没有改变原字符串的代码单元序列,而是创建了一个新的字符串,若需要在大量的修改字符串的情况下,String类对象每次修改都需要构建一个新的String对象,既耗时,又浪费空间, 使用StringBuilder类就可以避免这个问题的发生若需要改变字符串,只需要调用append方法

StringBuilder builder=new StringBuilder();
builder.append(ch);//appends a single character
builder.append(str);//appends a string

在需要构建字符串时调用toString即可

String str=builder.toString();

那么为什么StringBuilder的性能优于StringBuffer呢?

因为StringBuilder没有考虑多线程的情况,在多线程的情况下不安全,而StringBuffer在多线程下线程安全,自然速度就比不上StringBuilder

2.多种情况下StringBuffer,StringBuilder,String的使用

1.操作数据量少使用String,编译器可以使不变的字符串共享

2.单线程数据量多使用StringBuilder

3.多线程数据量多使用StingBuffer