String 和 CharSequence 关系与区别

String 继承于CharSequence,也就是说String也是CharSequence类型。
CharSequence是一个接口,它只包括length(), charAt(int index), subSequence(int start, int end)这几个API接口。除了String实现了CharSequence以外,StringBuffer和StringBuilder也实现了 CharSequence接口。
须要说明的是,CharSequence就是字符序列,String, StringBuilder和StringBuffer本质上都是经过字符数组实现的!
数组

CharSequence 是 char 值的一个可读序列。此接口对许多不一样种类的 char 序列提供统一的只读访问

(我的理解应该算得上是char类型得一个集合,是interface)

String 类表明字符串。Java 程序中的全部字符串字面值(如 "abc" )都做为此类的实例来实现。ui

CharSequence是String实现的一个接口,至关简单,就是要求是一串字符。因此每一个参数类型是CharSequence的方法,均可以实际代入String对象。
为何这些方法不干脆定义String做为参数类型?由于还有其余的CharSequence类型的类,好比StringBuffer和StringBuilder这两个很重要的类。
String对象是不可变的,这两个可变,因此咱们在构造字符串的过程当中每每要用到StringBuffer和StringBuilder。
若是那些方法定义String做为参数类型,那么就无法对它们用那些方法,先得转化成String才能用。
但StringBuffer和StringBuilder转换为String再转换过来很化时间的,用它们而不是直接用String的“加法”来构造新String原本就是为了省时间,
因此若是用String做为参数类型就杯具了。
相关文章
相关标签/搜索