CharSequence[]
和String[]
和有什麼不一樣?CharSequence []和一個String []之間有什麼區別?
回答
CharSequence是一個接口。字符串是不可變的字符序列並實現CharSequence接口。 CharSequence []和String []分別只是CharSequence和String的數組。
這意味着無論您看到CharSequence,都可以傳遞一個String對象。
String實現CharSequence接口。 CharSequence由String實現,但也包括CharBuffer,Segment,StringBuffer,StringBuilder。
所以一個String []和一個CharSequence []實質上是一樣的。但CharSequence是抽象的,String是實現。
順便說一句,'[]'表示數組的對象。所以String[]
是一個字符串數組。而String本身就是一個字符數組。
在Java中,String不是一個完全的字符數組。這些字符存儲在一個數組中,但您永遠無法訪問以確保字符串不可變。 – 2016-05-07 00:41:10
CharSequence表示一組有序的字符,並定義了檢查該字符集的方法。它是接口,並且此接口的一個實現是字符串類。
有關更多信息,請參閱Java API文檔。此外,本教程可能會對您有所幫助:http://download.oracle.com/javase/tutorial/
「有序字符集」意味着相同的字符不能出現兩次。 – 2010-08-30 13:45:59
我認爲他的評論意在區分大小寫。他沒有說'套',是嗎? – 2016-05-12 07:55:21
CharSequence
表示一個字符序列的接口,其中所有實現它的類都具有相同的操作。但是,特別是,CharSequence
不能保證序列是否可變。因此,您可以擁有一個不可變的實施類,如String
或可變類,如StringBuilder
和StringBuffer
。
此外,CharSequence
沒有細化的equals()
或hashCode()
方法的通用實現,所以也不能保證實現CharSequence
不同的類中的對象將比較等於即使他們持有的基本順序是一樣的。因此,考慮到:這三者之間
String seq1 = "hello";
StringBuilder seq2 = new StringBuilder("hello");
StringBuffer seq3 = new StringBuffer("hello");
比較使用.equals()
在Java 1.6的回報false
,但我找不到任何保證,這不會在將來改變(雖然它可能是相當不可能的)。
而CharSequence[]
和String[]
只是它們各自類型的數組。
編輯:這樣做的實際結果是比較CharSequence
S代表平等,你必須使用他們toString()
方法和比較結果String
S,因爲這是保證返回true
如果基礎序列是相同的。
+1爲好的解釋 – confucius 2012-05-05 18:49:32
CharSequence是一個接口。字符串是一個實現CharSequence接口的類。這意味着一個String對象作爲CharSequence對象傳遞。有不同的類實現CharSequence接口。它們都定義了與方法簽名(或抽象方法)相關的方法?)CharSequence提供的接口。
這裏是我的圖表,展示了String
是如何實施CharSequence
interface的concrete classes之一。
特別是,StringBuilder
通常用作鏈接String
運算符的快速替代對象,其中不需要線程安全性,運算符爲+
。
的方括號表示的陣列。因此,String[]
是String
對象的數組,而CharSequence[]
是對象的數組,它可以是或不是String
對象,但絕對是實現CharSequence
接口的對象。
有關更多討論,請參見my Answer here和my Answer here。
- 1. String和new String有什麼區別?
- 2. duration()。get(String)和duration()。as(String)之間的區別是什麼?
- 3. String方法split(String str,int len)和split(String str)之間有什麼區別?
- 4. 只有一個參數時,$ @和$ 1之間有什麼區別?
- 5. dpm()和dsm()之間有什麼區別?
- 6. @dynamic和@synthesize之間有什麼區別?
- 7. vbNullString和「」之間有什麼區別嗎?
- 8. * zoom和zoom之間有什麼區別?
- 9. String.Concat,string.format和+之間有什麼區別?
- 10. StaticLayout和DynamicLayout之間有什麼區別
- 11. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 12. :: after和after之間有什麼區別?
- 13. %.02f和%.2f之間有什麼區別?
- 14. {$ var}和$ var之間有什麼區別?
- 15. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 16. {0}和「」之間有什麼區別?
- 17. getA()和this.getA()之間有什麼區別?
- 18. @observable和@published之間有什麼區別
- 19. $ {}和#{}之間有什麼區別?
- 20. url.getFile()和getpath()之間有什麼區別?
- 21. KVC和Properties之間有什麼區別?
- 22. Lazy.Force()和Lazy.Value之間有什麼區別
- 23. 「層」和「層」之間有什麼區別?
- 24. 1.1em和1.05em之間有什麼區別?
- 25. proc和lambda之間有什麼區別?
- 26. ViewFlipper和ViewSwitcher之間有什麼區別
- 27. typedef和宏之間有什麼區別?
- 28. 「$^N」和「$ +」之間有什麼區別?
- 29. NSInvocation和block之間有什麼區別?
- 30. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
您可能想要添加一個java標記。或者有足夠代表的人可以做到。 – codinguser 2010-08-30 13:19:17
請參閱_Effective Java第2版,第52項:通過其interfaces_參考對象。 ''String'是一個''''''CharSequence'是一個'接口'('String'和其他一些實現)。 CharSequence []'更靈活。這就是說,_項目25:首選列表array_。 – polygenelubricants 2010-08-30 16:20:39
[CharSequence VS String in Java?]可能的重複(http://stackoverflow.com/questions/1049228/charsequence-vs-string-in-java) – 2015-07-01 18:33:06