画张草图,表示它们的继承关系
CharSequence接口:
表示是一个字符序列,提供了一系列抽象方法,不能用在set和map这些类集中,String、StringBuffer、StringBuilder都实现了这个接口,因此他们都属于字符序列,并且要覆写CharSequence中的几个操作方法 。
Appendable接口:
表示实现此接口的子类可以对字符或字符串进行追加操作【提供有append(char c),append(CharSequence s)方法】,StringBuffer和StringBuilder都实现了这个接口,它们可以进行字符序列的追加操作 ,而String没有实现此接口,因此它不能进行拼接操作,也就不能改变内容。此接口并没有规定多线程访问是否安全,要在子类中规定。通过观察源码可以发现,StringBuilder和StringBuffer操作方法几乎一样,而唯一不同的是,StringBuffer中大部分方法都使用synchronized关键字声明,完成了线程了同步操作,而StringBuilder没有,因此,StringBuffer的安全性更好。但相反的,线程同步带来的问题就是性能问题,每条线程都要排队等待,而StringBuilder由于线程异步,具有更好的性能。
Comparable<>接口: 提供compareTo(T t)方法,表示能对指定类型的对象之间比较大小,一般需要覆写此方法完成具体的实现 。 Number类的子类都实现了这个接口,使包装类的对象能进行大小比较,String中compareTo(String s)方法用来比较两个字符串的大小,返回编码的差值 .