String是一个字符串常量,对象一旦创建之后,并不可以更改。例如:
String name="abc";
name=name+"ed";
此时,就是一个对象创建,回收,再 创建的过程,两次的name ,其实是创建,回收,再创建,并不是同一个对象。
StringBuilder与StringBuffer均为字符串变量。而且运行速度,StringBuilder>StringBuffer>String
StringBuffer是线程安全的,Stringbuilder不是线程安全的,因为,在StringBuffer中有关键字synchronized。
总结:
String是字符串常量,适用于少量的字符串操作的情况,速度比较慢
StringBuilder是字符串变量,适用于单线程下在字符缓冲区进行大量操作的情况,不是线程安全的,因为没有synchronized
关键字,所以不建议在多线程的情况下适用,建议适用在单线程下适用
StringBuffer是字符串变量,适用于多线程下在字符缓冲区进行大量操作的情况,是线程安全的,因为很多方法中有synchronized关键字。