CharSequence与String的比较

CharSequence

CharSequence与String都能用于定义字符串,但CharSequence的值是 ??可读可写序列??,而String的值是只读序列。

CharSequence 是一个接口 代表的是一个有序字符集合,这个接口包含的方法有:charAt(int index),toString(),length(),subSequence(int start,int end)
这里需要说的一点是,对于一个抽象类或者接口不能使用new赋值 ,但是可以使用

CharSequence cs = “hello”;
CharSequence是实现这个接口的实例 举例:
CharSequence str = “dd”;
就是 CharSequence str = new String(“dd”);

但是不能使用 CharSequence cs=new CharSequence(“hello”);

上方原因解析

CharSequence 是一个接口不能new 一个接口实例
但是可以new 一个此接口的实现类
而 字符串 “hello” 就是一个String常量被放在常量池,创建后将hello的引用传回来。因此是正确的

验证可读可写

学艺不精,因此个人认为没有可写性,有知道的请指教。以下说我的理解

  1. 测试流程
    public static void main(String[] args) {
     
        CharSequence cs = new StringBuffer("");    //声明一个CharSequence类型的变量cs
        System.out.println(cs.hashCode());
        cs = ((StringBuffer)cs).append("123");
        System.out.println(cs.hashCode());
        StringBuffer sb = new StringBuffer("123");
        System.out.println("===================");
        System.out.println(sb.hashCode());
        sb.append("123");
        System.out.println(sb.hashCode());
    }

2.解释
我认为是本例是StringBuffer 的可读可写性,CharSequence 接口中没有增加的方法,因此不明白可写性怎么证明。
hashcode值比较
CharSequence与String的比较_第1张图片

你可能感兴趣的:(JAVA基础)