首先从字面上来看,CharSequence代表字符序列,它是一个接口。它仅提供了length(), charAt(int index), subSequence(int start, int end)这几个方法。
而String则是实现了CharSequence接口的一个实现类,StringBuffer和StringBuilder也同样实现了这个接口不过它们是继承自AbstractStringBuilder类。
之前看到有文章说CharSequence是一个可读可写的序列,如果是这样的话,那么它应该是和StringBuilder一样,再更改内容后,hashCode值是不变的。
但是经过本人测试,最后证明了CharSequence是一个只读的字符序列,和String一样,重新赋值就会换一个内存地址。
此外,CharSequence没有办法通过 == 和String进行比较,要进行比较的话,把CharSequence字符串话就OK了,比如 charSequence.toString() 后再进行比较。