通过看jdk源码发现Java字符串中有如下关系:
接口中的方法默认都是抽象的可以写也可以不写。
public interface CharSequence {
int length();
char charAt(int index);
CharSequence subSequence(int start, int end);
public String toString();
}
其他的都是该接口的实现类且是最终类,不能被继承。
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
<span style="color:#ff0000;">StringBuffe</span>
线程安全。但是有同步对象锁,所以性能下降。
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence