Was ist der Unterschied zwischen CharSequence [] und einem String []?
Was ist der Unterschied zwischen CharSequence[]
und String[]
?
Kommentar zu dem Problem - Öffnen
Möglicherweise möchten Sie eine java-tag. Oder jemand mit genug rep kann es tun.
Siehe Effektive Java 2nd Edition, Item 52: Beziehen sich auf Objekte, die durch Ihre Schnittstellen.
String
ein class
, CharSequence
ein in interface
(String
und ein paar andere implementieren). CharSequence[]
ist flexibler. Das heißt, Item 25: Lieber Listen, arrays. mögliche Duplikate von CharSequence VS String in Java?
InformationsquelleAutor der Frage Brigadier | 2010-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeichenfolge implementiert die CharSequence - Schnittstelle. CharSequence implementiert ist, durch die String, aber auch CharBuffer -, Segment -, StringBuffer, StringBuilder.
Also ein String[] und eine CharSequence[] ist im wesentlichen die gleiche. Aber CharSequence ist die Abstraktion, und String ist die Umsetzung.
Durch die Art und Weise, '[]' kennzeichnet ein array von Objekten. So
String[]
ist ein array von strings. Und Zeichenkette ist ein array von Zeichen.InformationsquelleAutor der Antwort Thierry-Dimitri Roy
CharSequence
stellt eine Schnittstelle zu einer Abfolge von Zeichen, die mit Operationen gemeinsam ist allen Klassen, die Sie implementieren. Jedoch, insbesondereCharSequence
nicht garantiert werden, ob die Sequenz ist veränderlich ist oder nicht. So können Sie eine unveränderliche Klasse Umsetzung, wieString
oder veränderlich, wieStringBuilder
undStringBuffer
.Darüber hinaus
CharSequence
nicht verfeinern Sie die Allzweck-Implementierungen derequals()
oderhashCode()
Methoden, es gibt also keine Garantie, dass Objekte unterschiedlicher Klassen implementierenCharSequence
vergleichen, gleich sein, selbst wenn die zugrunde liegende Sequenz, die Sie halten, ist das gleiche. Also, gegeben:Vergleiche zwischen diesen drei mit
.equals()
zurückfalse
auf Java 1.6, aber ich finde keine Garantien, dass dies nicht in Zukunft ändern (obwohl es wahrscheinlich ziemlich unwahrscheinlich ist).Sowie
CharSequence[]
undString[]
sind nur arrays der jeweiligen Arten.BEARBEITEN: Die praktische Konsequenz ist zu vergleichen
CharSequence
s für die Gleichheit, die Sie mit IhrentoString()
Methode und vergleichen die daraus resultierendeString
s, da diese garantiert zurücktrue
wenn die zugrunde liegenden Sequenzen sind die gleichen.InformationsquelleAutor der Antwort Chinmay Kanchi
Eine CharSequence ist ein Interface. String ist eine unveränderliche Folge von Zeichen und implementiert das interface CharSequence. CharSequence[] und String[] sind nur arrays und String CharSequence bzw.
Dies bedeutet, dass, wohin Sie sehen, CharSequence, können Sie ein String-Objekt.
InformationsquelleAutor der Antwort codinguser
CharSequence ist ein interface. String ist eine Klasse, die das interface CharSequence. Das bedeutet, dass ein String-Objekt vergeht wie ein CharSequence-Objekt. Es gibt verschiedene Klassen, die CharSequence implementieren Sie die Schnittstelle. Sie alle definieren die Methoden, die korrelieren mit der Methode, die Signaturen (oder auch abstrakte Methoden?) das interface CharSequence bietet.
InformationsquelleAutor der Antwort user28775
CharSequence repräsentiert eine geordnete Menge von Zeichen, und definiert Methoden, die für die Prüfung dieser Zeichensatz. Es ist ineterface, und einer Implementierung dieser Schnittstelle ist String Klasse.
Entnehmen Sie bitte der Java API-Dokumentation für weitere Informationen. Auch, dieses tutorial könnte dir helfen: http://download.oracle.com/javase/tutorial/
InformationsquelleAutor der Antwort Igor
Hier ist mein Diagramm zeigt, wie
String
ist eine von mehreren konkrete Klassen Umsetzung derCharSequence
Schnittstelle.Insbesondere
StringBuilder
wird Häufig verwendet, als eine schnellere alternative zur VerkettungString
Objekte mit der+
Betreiber, wo die thread-Sicherheit wird nicht benötigt.Den eckigen Klammern bedeutet, dass ein array. Also
String[]
ist ein array vonString
Objekte, undCharSequence[]
ist ein array von Objekten, die möglicherweise oder möglicherweise nichtString
Objekte, aber definitiv sind Objekte, die Umsetzung derCharSequence
- Schnittstelle.Sehen meine Antwort hier und meine Antwort hier für viel Diskussion.
InformationsquelleAutor der Antwort Basil Bourque