public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{}
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{}
区别:
1、String是一个常量类,创建常量开销要大于StringBuilder和StringBuffer。
2、String内部维护的是一个final修饰的字符数组。所以是String是不可变的。StringBuffer和StringBuilder是可变的。
private final char value[];
3、线程安全问题:
StringBuffer和StringBuilder实现逻辑几乎一样,并且抽象到AbstractStringBuilder抽象类中实现,只是StringBuffer将一些必要的方法进行同步处理了。所以,StringBuffer可以保证线程安全,而StringBuilder不可以保证线程安全。
4、运行速度方面:
StringBuilder>StringBuffer>String
*String进行字符串拼接操作会在JVM中的堆空间中新创建一个对象,创建对象是十分耗时间的,所以很慢。