Java中String、StringBuffer、StringBuilder的区别及分析
String | StringBuffer | StringBuilder | description | |
---|---|---|---|---|
JDK中开始版本 | 1.0 | 1.0 | 1.5 | |
类继承关系 | Object->String | Object->AbstractStringBuilder->StringBuffer | Object->AbstractStringBuilder->StringBuilder | StringBuffer和StringBuilder都继承自AbstractStringBuilder这个类,而AbstractStringBuilder和String都继承自Object这个类(Object是所有java类的超类) |
可变类/不可变类 | 不可变类(字符串常量) | 可变类(字符串变量) | 可变类(字符串变量) | String类没有append()、delete()、insert()这三个成员方法,而StringBuffer和StringBuilder都有这些方法 |
执行速度 | 慢 | 中 | 快 | |
线程安全与非安全 | 线程安全的 | 非线程安全的 | StringBuffer类中的大部分成员方法都被synchronized关键字修饰,而StringBuilder类没有出现synchronized关键字 |
总结
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
拼接字符串如不使用变量,应使用字符+
进行拼接