Heim  >  Artikel  >  Java  >  So verwenden Sie die String-Klasse von Java

So verwenden Sie die String-Klasse von Java

WBOY
WBOYnach vorne
2023-04-19 13:19:031781Durchsuche

So verwenden Sie die String-Klasse von Java

1. String im JDK verstehen

Schauen wir uns zunächst den Quellcode der String-Klasse im JDK an. Sie können sehen, dass die String-Klasse implementiert ist endgültig geändert, was bedeutet, dass die String-Klasse nicht vererbt werden kann. Auf diese Weise verwendet jeder, der JDK verwendet, dieselbe String-Klasse In derselben Version verwenden zwei verschiedene Personen dieselbe Methode und zeigen unterschiedliche Ergebnisse, was die Entwicklung des Codes unmöglich macht. Vererbung und Methodenüberschreibung bringen nicht nur Flexibilität, sondern auch viele Unterklassen. Das Problem des inkonsistenten Verhaltens



2. Vier Möglichkeiten, eine Zeichenfolge zu erstellenSo verwenden Sie die String-Klasse von Java

Methode eins: Direkte Zuweisung (häufig verwendet)

String str = „Hallo Wort“

Methode zwei: Objekte durch die Konstruktionsmethode generieren
String str1 = new String("Hallo Wort");

Methode 3: Objekt durch Zeichenarray generieren
char[] data = new char[]{'a', 'b','c'};

Methode 4: Durch String Statische Methode valueOf (beliebiger Datentyp) = > In String konvertieren (häufig verwendet)
String str2 = String.valueOf(10);



3. String-Literal So verwenden Sie die String-Klasse von Java

Literal: Direkt geschriebener Wert Es heißt Literal

10 - > int literal

10.1 --> double literal

" abc " - > Das Literal eines Strings ist eigentlich ein String-Objekt
String str = „Hallo Wort“;
String str2 = str;
Zu diesem Zeitpunkt ist dies sowohl ein String-Literal als auch ein String-Objekt. Um das Verständnis zu erleichtern, denken wir zunächst daran, dass es gespeichert ist Der Heap wird jedoch tatsächlich im Methodenbereich gespeichert. Wenn str2 = „Hello“ ist, hat dies keinen Einfluss auf die Ausgabe von str, da „Hello“ ebenfalls ein Zeichenfolgenobjekt ist, was darauf hinweist, dass es sich um ein neues handelt Zu diesem Zeitpunkt wurde Speicherplatz auf dem Heap geöffnet, und str2 speichert zu diesem Zeitpunkt den Adressraum des neuen Objekts, was keine Auswirkungen auf str hat



4 Der String-Vergleich ist gleich

Alle Referenzdatentypen werden verglichen Wenn sie gleich sind, verwenden Sie zum Vergleichen häufig verwendete Klassen im JDK. Sie können sie direkt verwenden. Der Referenzdatentyp verwendet ==, um die Adressen zu vergleichen. Das Bild unten zeigt zwei Referenzen der gleiche Adressraum. Es hängt mit dem konstanten String-Pool zusammen. Die folgende Abbildung generiert zwei Objekte und zwei Adressräume. Die Verwendung von == gibt false zurück. Die Vergleichsgröße von equal ist ein Vergleich unter Berücksichtigung der Groß- und Kleinschreibung Bei der Methode „equalsIgnoreCase“ wird die Groß-/Kleinschreibung nicht beachtet. 2. String-Konstantenpool: Ein String-Konstantenpool wird verwaltet, wenn das Objekt nicht im Heap vorhanden ist wird generiert und zum String-Konstantenpool hinzugefügt. Wenn die direkte Zuweisungsmethode zum Generieren eines String-Objekts verwendet wird, findet die JVM, dass der Inhalt, auf den verwiesen wird, bereits im Konstantenpool vorhanden ist Erstellen Sie ein neues String-Objekt, verwenden Sie jedoch das vorhandene Objekt direkt wieder. Aus diesem Grund verweisen die drei Referenzen im obigen Bild auf dieselbe Adresse. Wenn das Objekt zum ersten Mal generiert wird, befindet sich nichts im Konstantenpool. Daher 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 und keine neuen Objekte mehr generiert der gleiche Adressraum wie str1So verwenden Sie die String-Klasse von Java

So verwenden Sie die String-Klasse von Java

So verwenden Sie die String-Klasse von Java
Das Programm wird von rechts nach links ausgeführt. Zu diesem Zeitpunkt ist die rechte Seite der ersten Codezeile eine Zeichenfolgenkonstante, die auch ein Zeichenfolgenobjekt ist. Öffnen Sie daher zunächst ein Leerzeichen im Konstantenpool. und dann eine neue Zeichenfolge erstellen Das Objekt wird gespeichert und das Programm wird nach links ausgeführt. Wenn das neue Schlüsselwort auftritt, wird ein neues Objekt erstellt und im Heap gespeichert. Dann zeigt str1 auf das Objekt im Heap In der zweiten und dritten Codezeile wird festgestellt, dass der Konstantenpool vorhanden ist. Wenn das neue Schlüsselwort auftritt, wird die Speicherzuordnung wie folgt erstellt :
So verwenden Sie die String-Klasse von Java

2. Manuelle Pooling-Methode

Die von der String-Klasse bereitgestellte interne Methode, dies ist eine lokale Methode:
So verwenden Sie die String-Klasse von Java
Aufruf Die interne Methode speichert das Objekt, auf das die aktuelle String-Referenz zeigt, im String-Konstantenpool . Es gibt zwei Situationen:
1. Wenn das Objekt bereits im aktuellen Konstantenpool vorhanden ist, wird kein neues Objekt generiert und an das Konstanten-String-Objekt zurückgegeben.
2. Wenn das Objekt nicht im aktuellen Konstantenpool vorhanden ist, Fügen Sie das Objekt dem Pool hinzu und geben Sie die Adresse zurück, nachdem Sie den Pool betreten haben.

1. Schauen Sie sich die Ausgabe der folgenden Codezeilen an
So verwenden Sie die String-Klasse von Java
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
So verwenden Sie die String-Klasse von Java
Solange Sie den Rückgabewert des Aufrufs der internen Methode erhalten, wird es true zurückgeben
So verwenden Sie die String-Klasse von Java
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.
So verwenden Sie die String-Klasse von Java
2. Schauen Sie sich die Ausgabe der folgenden Codezeilen an Pool, es gibt nichts im Pool, also verschieben Sie es direkt in den konstanten Pool
So verwenden Sie die String-Klasse von Java

So verwenden Sie die String-Klasse von Java 3. Unveränderlichkeit von Strings


1. Warum ist es unveränderlich? Hinweis: Die sogenannte Unveränderlichkeit von Strings bezieht sich auf die Unveränderlichkeit des Inhalts der Zeichenfolge, nicht, dass die Referenz der Zeichenfolge nicht geändert werden kann

Die Unveränderlichkeit bezieht sich hier auf Sie sind „Hallo“, „Welt“, „HalloWelt“, „!!!“ und das Gespleißte „helloworld!!!“ Dies sind bereits erstellte String-Objekte. Sobald diese Objekte deklariert sind, kann der Verweis geändert werden 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. So verwenden Sie die String-Klasse von Java

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. So verwenden Sie die String-Klasse von Java String str = "hello";

So verwenden Sie die String-Klasse von Java
2 .How um den Inhalt der Zeichenfolge zu ändern

1. Zerstören Sie die Kapselung des Wertearrays durch Reflektion zur LaufzeitSo verwenden Sie die String-Klasse von Java 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


So verwenden Sie die String-Klasse von Java2 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;


So verwenden Sie die String-Klasse von Java

b. Den angegebenen Datenbereich löschen, löschen (int start, int end); alle Inhalte von Anfang bis Ende löschen, links schließen und rechts öffnen
So verwenden Sie die String-Klasse von Java

c , jeder Datentyp): Beginnen Sie mit dem Einfügen an der Startindexposition, und der Startindex des Einfügens ist start
So verwenden Sie die String-Klasse von Java

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

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