String、StringBuffer、StringBuilder的区别?
String:字符串常量
StringBuffer、StringBuilder:字符串变量
运行速度:
StringBuilder>StringBuffer>String
为什么String最慢???
因为创建String对象后,不能再改变;(每次改变String的值,都要新创建一个对象,再将引用指向该对象,浪费内存空间,内存中的无用引用多了以后,JVM的GC就开始工作,系统就会慢了)
而StringBuffer和StrignBuilder创建对象后,还可以改变。
线程安全:
StringBuffer是线程安全的,因为StringBuffer的很多方法中都可以使用Sychronized关键字,可保证线程安全,而StringBulider的方法中没有该关键字,不能保证线程安全。
适用场景:
String:适用于少量字符串操作情况或字符串不经常变化的场景中使用
StringBuffer:适用于多线程在字符串缓存区进行大量操作。
StringBulider:适用于单线程在字符串缓存区进行大量操作。