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作為參數類型就杯具了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM