Was ist der Unterschied zwischen CharSequence[] und eine Zeichenfolge[]?

Lesezeit: 3 Minuten

Benutzer-Avatar
Brigadegeneral

Was ist der Unterschied zwischen CharSequence[] und String[]?

  • Vielleicht möchten Sie ein Java-Tag hinzufügen. Oder jemand mit genug Repräsentanten kann es tun.

    – Codierbenutzer

    30. August 2010 um 13:19 Uhr

  • Sehen Gültig für Java 2nd Edition, Item 52: Verweisen Sie auf Objekte über ihre Schnittstellen. String ist ein class, CharSequence ist ein interface (das String und ein paar andere implementieren). CharSequence[] ist flexibler. Das gesagt, Punkt 25: Bevorzugen Sie Listen gegenüber Arrays.

    – polygenelubricants

    30. August 2010 um 16:20 Uhr


  • mögliches Duplikat von CharSequence VS String in Java?

    – Basilikum Bourque

    1. Juli 2015 um 18:33 Uhr

Benutzer-Avatar
Thierry-Dimitri Roy

Schnur implementiert die Zeichenfolge Schnittstelle. CharSequence wird von String implementiert, aber auch von CharBuffer, Segment, StringBuffer, StringBuilder.

Also eine Schnur[] und eine CharSequence[] ist im wesentlichen gleich. Aber CharSequence ist die Abstraktion und String ist die Implementierung.

Übrigens, ‘[]’ bezeichnet ein Reihe von Objekten. So String[] ist ein Array von Strings. Und String selbst ist ein Array von Zeichen.

  • In Java ist String nicht gerade ein Array von Zeichen. Die Zeichen werden in einem Array gespeichert, aber Sie erhalten nie Zugriff, um sicherzustellen, dass String unveränderlich ist.

    – Matej ‘Yin’ Gagyi

    7. Mai 2016 um 0:41 Uhr

CharSequence stellt eine Schnittstelle zu einer Folge von Zeichen dar, mit Operationen, die allen Klassen gemeinsam sind, die sie implementieren. Jedoch insbesondere CharSequence übernimmt keine Garantie dafür, ob die Sequenz veränderlich ist oder nicht. Sie können also eine unveränderliche Implementierungsklasse haben, z String oder veränderliche, wie StringBuilder und StringBuffer.

Zusätzlich, CharSequence verfeinert nicht die Allzweckimplementierungen des equals() oder hashCode() Methoden, daher gibt es keine Garantie, dass Objekte verschiedener Klassen implementiert werden CharSequence werden als gleich verglichen, selbst wenn die zugrunde liegende Sequenz, die sie enthalten, dieselbe ist. Also gegeben:

String seq1 = "hello";
StringBuilder seq2 = new StringBuilder("hello");
StringBuffer seq3 = new StringBuffer("hello");

Vergleiche zwischen diesen drei mit .equals() Rückkehr false auf Java 1.6, aber ich kann keine Garantien dafür finden, dass sich dies in Zukunft nicht ändern wird (obwohl es wahrscheinlich ziemlich unwahrscheinlich ist).

Und CharSequence[] und String[] sind nur Arrays ihrer jeweiligen Typen.

BEARBEITEN: Das praktische Ergebnis davon ist zu vergleichen CharSequences für Gleichheit müssen Sie ihre verwenden toString() Methode und vergleiche das Ergebnis Strings, da dies garantiert zurückkehrt true wenn die zugrunde liegenden Sequenzen gleich sind.

Eine CharSequence ist eine Schnittstelle. String ist eine unveränderliche Folge von Zeichen und implementiert die CharSequence-Schnittstelle. Zeichenfolge[] und Saite[] sind nur Arrays von CharSequence bzw. String.

Das bedeutet, wo immer Sie CharSequence sehen, können Sie ein String-Objekt übergeben.

Benutzer-Avatar
Basil Bourque

Hier ist mein Diagramm, das zeigt, wie String ist eine von mehreren konkrete Klassen Umsetzung der CharSequence Schnittstelle.

Im Speziellen, StringBuilder wird häufig als schnellere Alternative zur Verkettung verwendet String Gegenstände mit + -Operator, bei dem Thread-Sicherheit nicht erforderlich ist.

PIFk9

Die eckigen Klammern bedeuten ein Array. So, String[] ist ein Array von String Objekte und CharSequence[] ist ein Array von Objekten, die sein können oder nicht String Objekte sind aber definitiv Objekte, die die implementieren CharSequence Schnittstelle.

Siehe meine Antwort hier und meine Antwort hier für viel mehr Diskussion.

CharSequence ist eine Schnittstelle. String ist eine Klasse, die die Schnittstelle CharSequence implementiert. Das bedeutet, dass ein String-Objekt als CharSequence-Objekt durchgeht. Es gibt verschiedene Klassen, die die CharSequence-Schnittstelle implementieren. Sie alle definieren die Methoden, die mit den Methodensignaturen (oder abstrakten Methoden?) korrelieren, die die Schnittstelle CharSequence bereitstellt.

Benutzer-Avatar
Grant Miller

String ist die übergeordnete Klasse, die die Schnittstelle implementiert CharSequence.

Es gibt andere Klassen, die ebenfalls die implementieren CharSequence wie StringBuffer, StringBuilderetc.

Benutzer-Avatar
Igor

Zeichenfolge stellt einen geordneten Satz von Zeichen dar und definiert Methoden zum Untersuchen dieses Zeichensatzes. Es ist eine Schnittstelle, und eine Implementierung dieser Schnittstelle ist Schnur Klasse.

Weitere Informationen finden Sie in der Java-API-Dokumentation. Auch dieses Tutorial könnte Ihnen helfen: http://download.oracle.com/javase/tutorial/

  • Ein “geordneter Satz von Zeichen” würde bedeuten, dass dasselbe Zeichen nicht zweimal vorkommen kann.

    – Michael Borgwardt

    30. August 2010 um 13:45 Uhr

  • Ich denke, sein Kommentar soll zwischen Groß- und Kleinschreibung unterscheiden. Er hat nicht ‘Set’ gesagt, oder?

    – Igor Soudakevitch

    12. Mai 2016 um 7:55 Uhr

1144900cookie-checkWas ist der Unterschied zwischen CharSequence[] und eine Zeichenfolge[]?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy