通过看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
StringBuilder线程不安全,但是在单线程环境下效率高。
public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence