charsequence是乙個字串行介面,實現了string、stringbuffer、stringbuilder類,所有使用charsequence字串行介面型別的程式都看可使用其不同的實現,簡單的說,就是子類型別,比如常見的string型別,所以呼叫時大部分情況下輸入的都是string型別資料。
之所以不直接使用string型別作為引數型別,是因為charsequence介面還有其他的已實現的類,就是前面提到的stringbuffer、stringbuilder,眾所周知,string物件不可變,而這兩者可變,所以在構造字串時往往用stringbuffer、stringbuilder, 若在jdk指定的方法中直接用string做引數型別,就無法使用提供的方法,而stringbuffer stringbuiilder轉換成string再轉換回來會用去很長時間。
另外,需要提到一點,charsequence是字串行, 所以它的實現類(之前說的三個)本質上都是通過字元陣列實現的。
順便說說stringbuffer和stringbuilder的區別
這兩者都是可變的字串行,都實現charsequence介面,不過,stringbuffer是執行緒安全,stringbuilder是非執行緒安全。
public final class stringbuilder
extends object
implements serializable, charsequence
public final class stringbuffer
extends object
implements serializable, charsequence
網上說這兩個類都繼承
abstractstringbuilder,我在jdk1.6、1.7、1.8找過,根本不存在這個類,它們繼承的是object。
charsequence介面 請參考: ctrl+f查詢「charsequence」即可;
stringbuffer 請參考: ctrl+f查詢「stringbuffer」即可;
stringbuilder 請參考: ctrl+f查詢「stringbuilder」即可;
CharSequence 詳情介紹
前言 charsequence是乙個介面,比較常見的string stringbuilder stringbuffer都實現了這個介面。當我們看到乙個api裡面有charsequence的時候,它也是可以被其子類代替的,一般用string代替即可。charsequence詳情介紹 charseque...
CharSequence與String的區別是什麼
charsequence與string都能用於定義字串,但charsequence的值是可讀可寫序列,而string的值是唯讀序列。charsequence是實現這個介面的例項 舉例 charsequence str dd 就是 charsequence str new string dd char...
樹狀陣列和ST表
binary index tree 用來解決動態字首和問題的資料結構。樹狀陣列或者二叉索引樹也稱作binary indexed tree,又叫做fenwick樹 它的查詢和修改的時間複雜度都是log n 空間複雜度則為o n 這是因為樹狀陣列通過將線性結構轉化成樹狀結構,從而進行跳躍式掃瞄。通常使用...