你还不知道 String、String Builder 、String buffer的区别?
)
先讲一下string
首先String是一个应用类型。String跟另外两个类比较的话,区别就是在使用"+"号的循环拼接速度慢。
为什么速度会更慢一点?
因为在jdk编译的时候,在循环中会先 new StringBuilder,然后再使用append方法拼接字符串。所以在循环的中拼接字符串就是创建一个StringBuilder对象进行一次字符拼接然后丢弃。
建议在平时写代码使用Stringbuilder去拼接字符
再就是StringBuilder了
SringBuilder的使用场景无非就是拼接字符串,但是StringBuffer也有同样的功能,那么这两个的运行效率谁会更高呢?
当然是StringBuilder毫无疑问,至于为什么等会告诉你。
说道效率问题,那就不得说说为啥StringBuilder为什么会更快一点了
因为StringBuilder是在 单线程环境下运行的,换句话说就是不支持多线程。在多线程环境下会导致 数据不安全。
这下应该知道了为什么StringBuffer为什么会慢一点了吧,但是它是怎么保证线程安全的呢?
通过StringBuffer的源码不难发现,在append的方法上添加了Synchronized的关键字
public synchronized StringBuffer append(StringBuffer sb) {
toStringCache = null;
super.append(sb);
return this;
}