Heim  >  Artikel  >  Java  >  Beherrschen Sie die String-Klasse von Java vollständig

Beherrschen Sie die String-Klasse von Java vollständig

WBOY
WBOYnach vorne
2022-05-25 13:41:331655Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java. Er stellt hauptsächlich verwandte Themen zur String-Klasse vor, einschließlich des konstanten String-Pools, der Unveränderlichkeit von Strings usw. Schauen wir uns das gemeinsam an. Ich hoffe, es hilft allen.

Beherrschen Sie die String-Klasse von Java vollständig

Empfohlenes Lernen: „Java-Video-Tutorial“ 1. String im JDK verstehen

Werfen wir zunächst einen Blick auf den Quellcode der String-Klasse im JDK. Sie können sehen, dass die String-Klasse von final geändert wurde, was bedeutet, dass die String-Klasse nicht vererbt werden kann und es keine Unterklassen von String gibt. Auf diese Weise verwenden alle Personen, die das JDK verwenden, dieselbe String-Klasse Um zu vererben, kann jeder String erweitert werden. Zwei verschiedene Personen verwenden dieselbe Methode und zeigen unterschiedliche Ergebnisse an.

Vererbung und Methodenüberschreibung sind nicht möglich band Es bringt zwar Flexibilität mit sich, bringt aber auch viele Probleme des inkonsistenten Verhaltens von Unterklassen mit sich


2. Vier Möglichkeiten, Zeichenfolgen zu erstellen 2: Objekte durch die Konstruktionsmethode generieren
String str1 = new String("hello word"); Beherrschen Sie die String-Klasse von Java vollständig

Methode 3: Objekte durch Zeichenarrays generieren

char[] data = new char[]{'a', 'b', 'c'};

Methode 4: Verwenden Sie die statische Methode valueOf (beliebiger Datentyp) = >In String konvertieren (häufig verwendet)
String str2 = String.valueOf(10);


3

Literal: Der direkt geschriebene Wert heißt Literal
10 – > Doppelliteral

true --> String-Literal

Ein String-Literal ist eigentlich ein String Objekt
String str = „Hallo Wort“;
String str2 = str; Wir denken vorübergehend, dass es auf dem Heap gespeichert ist. Wenn str2 = „Hello“ ist, hat dies keinen Einfluss auf die Ausgabe von str String-Objekt bedeutet, dass zu diesem Zeitpunkt ein neuer Speicherplatz auf dem Heap geöffnet wird und str2 zu diesem Zeitpunkt den Adressraum des neuen Objekts speichert, was keine Auswirkungen auf str Beherrschen Sie die String-Klasse von Java vollständig

4 hat

Alle Referenzdatentypen verwenden die Methode „equals“, wenn sie vergleichen, ob sie gleich sind. Die allgemeinen Klassen im JDK haben die Methode „equals“ überschrieben und können direkt verwendet werden.
Referenzdatentypen verwenden ==, um Adressen zu vergleichen. Das Bild unten zeigt zwei Referenzen, die auf verweisen derselbe Adressraum, der mit dem konstanten String-Pool zusammenhängt


Das Bild unten erzeugt zwei Objekte, zwei Adressräume, wobei == false zurückgibt


Die Vergleichsgröße von equal Es handelt sich um einen Vergleich unter Berücksichtigung der Groß- und Kleinschreibung

Beherrschen Sie die String-Klasse von Java vollständig Die Methode equalIgnoreCase ist ein Vergleich, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird

Beherrschen Sie die String-Klasse von Java vollständig

2. String-Konstanten-Pool

1. Was ist ein String-Konstanten-Pool? Wenn die direkte Zuweisungsmethode zum Generieren eines String-Objekts verwendet wird, verwaltet die JVM einen String-Konstanten-Pool Wenn im Heap ein String-Objekt vorhanden ist, wird ein String-Objekt generiert und dem String-Konstantenpool hinzugefügt. Wenn die direkte Zuweisungsmethode weiterhin zum Generieren eines String-Objekts verwendet wird, stellt die JVM fest, dass der Inhalt, auf den die Referenz verweist, bereits im Konstantenpool vorhanden ist. Zu diesem Zeitpunkt besteht keine Notwendigkeit, ein neues Zeichenfolgenobjekt zu erstellen, sondern das vorhandene Objekt direkt wiederzuverwenden. Aus diesem Grund verweisen die drei Referenzen im obigen Bild auf dieselbe Adresse

  1. Wenn das Objekt zum ersten Mal generiert wird, Der Konstantenpool Wenn nichts vorhanden ist, wird ein Zeichenfolgenobjekt generiert und im Konstantenpool gespeichert. Wenn das Objekt zum zweiten und dritten Mal generiert wird, stellt die JVM fest, dass derselbe Inhalt bereits im Konstantenpool vorhanden ist, sodass er nicht mehr vorhanden ist Erzeugt ein neues Objekt und zeigt direkt auf denselben Adressraum wie str1

Beherrschen Sie die String-Klasse von Java vollständig

Beherrschen Sie die String-Klasse von Java vollständig
Zu diesem Zeitpunkt wird die rechte Seite der ersten Codezeile eine Zeichenfolgenkonstante sein. Da es sich ebenfalls um ein Zeichenfolgenobjekt handelt, öffnen Sie es zunächst im Konstantenpool, erstellen Sie dann ein neues Zeichenfolgenobjekt und speichern Sie es. Das Programm wird links ausgeführt und trifft auf ein neues Schlüsselwort Dann wird str1 auf das Objekt im Heap und dann auf die zweite und dritte Zeile gezeigt. Beim Codieren wird festgestellt, dass das Objekt bereits im Konstantenpool vorhanden ist. Wenn das neue Schlüsselwort gefunden wird, wird ein neues Objekt erstellt:

  1. 2. Manuelle Pool-Eingabemethode

Die von der String-Klasse bereitgestellte interne Methode: Beherrschen Sie die String-Klasse von Java vollständig

Durch Aufrufen der internen Methode wird das Objekt, auf das die aktuelle Zeichenfolgenreferenz verweist, im Zeichenfolgenkonstantenpool gespeichert. Es gibt zwei Situationen: 1. Wenn das Objekt bereits im aktuellen Konstantenpool vorhanden ist, wird es nicht erneut generiert. gibt das String-Objekt im Konstantenpool zurück Beherrschen Sie die String-Klasse von Java vollständig 2. Wenn das Objekt im aktuellen Konstantenpool nicht vorhanden ist, fügen Sie das Objekt dem Pool hinzu und geben Sie die Adresse nach dem Betreten des Pools zurück.

1. Schauen Sie sich die Ausgabe der folgenden Codezeilen an


Da die interne Methode einen Rückgabewert hat, ruft str1 zu diesem Zeitpunkt nur die interne Methode auf und empfängt den Rückgabewert nicht, sodass str1 immer noch auf zeigt das Objekt im Heap, str2 zeigt auf das Objekt im Konstantenpool, also gibt es false zurück Beherrschen Sie die String-Klasse von Java vollständig

Solange Sie den Rückgabewert des Aufrufs der internen Methode erhalten, wird es true zurückgeben

Das Objekt, auf das str1 zeigt, wird manuell zum Pool hinzugefügt, und der Pool verfügt bereits über das Objekt. Lassen Sie str1 direkt auf das Objekt zeigen.
Beherrschen Sie die String-Klasse von Java vollständig
2. Schauen Sie sich die Ausgabe der folgenden Codezeilen an Pool, es ist nichts im Pool, also verschieben Sie es direkt in den konstanten Pool
Beherrschen Sie die String-Klasse von Java vollständig


3. Die Unveränderlichkeit von Zeichenfolgen

1. Warum ist sie unveränderlich? Hinweis: Die sogenannte Zeichenfolgenunveränderlichkeit bedeutet, dass der Inhalt der Zeichenfolge unveränderlich ist und nicht, dass die Referenz der Zeichenfolge nicht geändert werden kann Unveränderlich bezieht sich auf „hello“, „world“, „helloworld“, „!!!“ und die zusammengefügten „helloworld!!!“-Objekte können nach der Deklaration nicht mehr geändert werden. aber die Referenz kann geändert werden: In einem Moment zeigt sie auf „Hallo“, in einem anderen Moment zeigt sie auf „Hallo Welt“ und jetzt zeigt sie auf „Hallo Welt“! ! ! , das ist alles möglich


Ein String ist nur ein Zeichenarray -> char[], der String wird tatsächlich im Zeichenarray gespeichert. Warum kann der Inhalt der Zeichenfolge nicht geändert werden? Schauen wir uns den Quellcode der Zeichenfolge an und finden es heraus. Beherrschen Sie die String-Klasse von Java vollständig

Wir können sehen, dass das Zeichenarray in String gekapselt ist. Auf dieses Zeichenarray kann nicht von außerhalb der String-Klasse zugegriffen werden, geschweige denn der Inhalt des Strings geändert werden. Beherrschen Sie die String-Klasse von Java vollständig String str = „hello“;

Beherrschen Sie die String-Klasse von Java vollständig
2 .How um den Inhalt der Zeichenfolge zu ändern

1. Zerstören Sie die Kapselung des Wertearrays durch Reflektion zur LaufzeitBeherrschen Sie die String-Klasse von Java vollständig 2. Ersetzen Sie die StringBuilder- oder StringBuffer-Klasse - - ist nicht mehr derselbe Typ

a.StringBuilder: Thread unsicher, starke Leistung

b .StringBuffer: Thread-sicher, schlechte Leistung

Darüber hinaus ist die Verwendung der beiden Klassen genau gleich


Wenn Sie Zeichenfolgen häufig verbinden müssen, verwenden Sie die Append-Methode der StringBuilder-Klasse. Hier wird nur ein Objekt generiert. Was sich nach einer Weile ändern wird, und bald wird es zu Hallo Welt
StringBuilder-Klasse und String Gegenseitige Konvertierung von Klassen:

1. StringBuilder kann durch Aufrufen der toString-Methode


Beherrschen Sie die String-Klasse von Java vollständig2 in StringBuilder-Klasse konvertiert werden, indem der Konstruktor oder die Append-Methode von StringBuilder verwendet wird


Andere gängige Methoden:

a. String-Umkehroperation, reverse(), bereitgestellt von sb;


Beherrschen Sie die String-Klasse von Java vollständig

b. Löschen Sie alles von Anfang bis Ende Ende, links, geschlossen, rechts, offenes Intervall Video-Tutorial


Das obige ist der detaillierte Inhalt vonBeherrschen Sie die String-Klasse von Java vollständig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen