String,StringBuffer,StringBuilder对比

总结一下,网上搜来的区别:
这三个的区别主要体现在两个方面,
运行速度
线程安全

1,就运行速度来说的话,StringBuilder> StringBuffer> String
字符串慢的主要原因是,字符串是字符串常量,而StringBuilder的的,StringBuffer的的是字符串变量
字符串一旦创建后对象不可更改,但是后面两个是变量,可以更改。

2,就线程安全来说
StringBuilder的的是线程不安全的
的StringBuffer的是线程安全的

如果StringBuffer的的对象被多个线程使用时,其中有很多方法可以带有同步关键字,所以可以保证线程是安全的
而StringBuilder的的则没有该关键字,所以不能保证线程安全

若要在单线程下建议使用速度比较快的的的StringBuilder
而在多线程下,建议使用比较安全的的StringBuffer的
而字符串适用于少量字符串操作的情况

字符串为什么是不可变的?
String,StringBuffer,StringBuilder对比

因为在JDK源码中,即上述代码中,字符串被声明成最后类,说明最终的类不可继承
值[]数组被最终修饰,说明该数组不可修改。
因此字符串不可改变