String、StringBuffer 和 StringBuilder

String、StringBuffer 和 StringBuilder

先看一下它们自己的构造和源码
String、StringBuffer 和 StringBuilder


String

public final class String
implements java.io.Serializable, Comparable, CharSequence

StringBuilder

public final class StringBuilder extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

StringBuffer

public final class StringBuffer extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

从源码可以看出来它们都是被final修饰的类所以它们都是不可以改变的 ,Comparable接口有compareTo(String s)方法,CharSequence接口有length(),charAt(int index),subSequence(int start,int end)方法。
String 其实是基于字符数组 char[] 实现的
AbstractStringBuilder是个抽象类 StringBuffer 和 StringBuilder 的具体操作都是由 AbstractStringBuilder 来实现的
StringBuilder是在 JDK 5 中才出现的,相比String,StringBuilder出来较晚。
JDK 8 以后,StringBuffer 是加了用transient 关键字修饰的 toStringCache 缓存字段,
被transient 关键字修饰过的属性,是不会被序列化的,换句话来说,就是这个字段只会存在于内存之中。