zoukankan      html  css  js  c++  java
  • 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" )都作为此类的实例来实现。

    CharSequence是String实现的一个接口,相当简单,就是要求是一串字符。所以每个参数类型是CharSequence的方法,都可以实际代入String对象。
    为什么这些方法不干脆定义String作为参数类型?因为还有其他的CharSequence类型的类,比如StringBuffer和StringBuilder这两个很重要的类。
    String对象是不可变的,这两个可变,所以我们在构造字符串的过程中往往要用到StringBuffer和StringBuilder。
    如果那些方法定义String作为参数类型,那么就没法对它们用那些方法,先得转化成String才能用。
    但StringBuffer和StringBuilder转换为String再转换过来很化时间的,用它们而不是直接用String的“加法”来构造新String本来就是为了省时间,
    所以如果用String作为参数类型就杯具了。
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/ChrisMurphy/p/4760197.html
Copyright © 2011-2022 走看看