String系列源码解析01 - 总体框架

String系列框架图:


一、CharSequence

CharSequence的定义如下:
public interface CharSequence {}

CharSequence是一个接口,表示char值的一个可读序列。此接口对许多不同种类的char序列提供统一的自读访问。此接口不修改该equals和hashCode方法的常规协定,因此,通常未定义比较实现 CharSequence 的两个对象的结果。正因如此,不推荐使用任意的CharSequence实例作为Set集合的元素或者Map对象的键,这是CharSequence源码中明确说明的。

二、Comparable

Comparable的定义如下:
public interface Comparable<T> {}

强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序。实现此接口的对象可用做SortedMap对象的键或SortedSet对象的元素,而不需要指定Comparator实例。

三、Appendable

Appendable的定义如下:
public interface Appendable {}

Appendable接口的实现类的对象能够被添加 char 序列和值。如果某个类的实例打算接收取自 java.util.Formatter 的格式化输出,那么该类必须实现 Appendable 接口。 要添加的字符应该是有效的 Unicode 字符。 Appendable 对于多线程访问而言没必要是安全的。线程安全由扩展和实现此接口的类负责。

四、AbstractStringBuilder

AbstractStringBuilder的定义如下:
abstract class AbstractStringBuilder implements Appendable, CharSequence {}

AbstractStringBuilder实现了CharSequence和Appendable接口,因此AbstractStringBuilder是一个可变的字符序列。在任意时间点,它包含特定的字符序列,但是序列的内容和长度都可以通过调用特定的方法进行修改。

StringBuffer和StringBuilder都是AbstractStringBuilder的子类,正是AbstractStringBuilder实现了可变字符序列需要的方法,使得StringBuffer和StringBuilder的实现变得更加简单。


未完待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值