JAVA中String、StringBuffer、StringBuilder三者的区别?
String是字符串常量、StringBuffer和StringBuilder的是字符串变量。
(1)运行速度:StringBuilder>StringBuffer>String。
String是常量,String对象一旦创建之后该对象是不可更改的,其他两个的对象都是变量,可以更改。String对象需要重新赋值的时候,原来的str就会被jvm的垃圾回收机制给回收了,也就是str并没有做任何改变,符合对象一旦创建之后该对象是不可更改的。而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行操作更改,而不进行创建和回收的操作。所以速度回相对快。
(2)StringBuilder是线程不安全,而StringBuffer是线程安全的。
StringBuffer中很多方法都是带有synchronized关键字,而StringBuilder的方法则没有关键字,如果是多线程环境那么就使用StringBuffer,在单线程环境下建议使用速度更快的StringBuilder。
总结:
String:适合少量的字符串操作的情况。
StringBuilder:适用于单线程环境下的大量字符串操作。
StringBuffer:适用于多线程环境下进行大量字符串操作。