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.
Empfohlenes Lernen: „Java-Video-Tutorial“ 1. String im JDK verstehen
2. Vier Möglichkeiten, Zeichenfolgen zu erstellen 2: Objekte durch die Konstruktionsmethode generieren
String str1 = new String("hello word");
Methode 4: Verwenden Sie die statische Methode valueOf (beliebiger Datentyp) = >In String konvertieren (häufig verwendet)
String str2 = String.valueOf(10);
Literal: Der direkt geschriebene Wert heißt Literal
10 – > Doppelliteral
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
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
Die Methode equalIgnoreCase ist ein Vergleich, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird
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:
Die von der String-Klasse bereitgestellte interne Methode:
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 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.
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
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.
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
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.
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. String str = „hello“;
2 .How um den Inhalt der Zeichenfolge zu ändern
1. Zerstören Sie die Kapselung des Wertearrays durch Reflektion zur Laufzeit 2. Ersetzen Sie die StringBuilder- oder StringBuffer-Klasse - - ist nicht mehr derselbe Typ
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
2 in StringBuilder-Klasse konvertiert werden, indem der Konstruktor oder die Append-Methode von StringBuilder verwendet wird
Andere gängige Methoden:
》
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!