String-Literale und neue Schlüsselwörter in Java-Strings
In Java ist die String-Klasse ein grundlegender Datentyp, der zur Darstellung von Zeichenfolgen verwendet wird. Es gibt jedoch einen subtilen Unterschied zwischen der Erstellung eines neuen String-Objekts mit dem neuen Schlüsselwort und der direkten Zuweisung einer Literalzeichenfolge zu einer Variablen.
Verwendung des neuen Schlüsselworts
The Codeausschnitt String s = new String("silly"); Erstellt eine neue Instanz der String-Klasse mit dem Literal „silly“ als Argument. Dieser Vorgang weist zusätzlichen Speicher zu und erstellt ein neues Objekt auf dem Heap.
Direktes Zuweisen eines Literals
Andererseits ist die Zuweisung String s = "Nicht mehr albern "; weist der Variablen s direkt den Literalwert „Nicht mehr albern“ zu. Java erstellt automatisch ein anonymes String-Objekt und speichert es in der Variablen, ohne dass das Schlüsselwort new verwendet werden muss. Diese Optimierung vermeidet unnötige Speicherzuweisung und Objekterstellung.
Im Fall der CaseInsensitiveString-Klasse, die die String-Klasse nicht erweitert, wird die direkte Zuweisung eines Literals jedoch nicht direkt unterstützt. Um dies zu ermöglichen, haben wir zwei Möglichkeiten:
Option 1: Erweitern der String-Klasse
Wir können die String-Klasse erweitern, um eine CaseInsensitiveString-Klasse zu erstellen, die ihr Verhalten erbt und ermöglicht die direkte Zuweisung von Literalen. Dies erfolgt durch Überschreiben der Methoden toString() und equal(), um Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung zu ermöglichen.
Option 2: Benutzerdefinierte Konstruktorüberladungen
Ein anderer Ansatz ist die Überladung der Konstruktor von CaseInsensitiveString zum Akzeptieren literaler Argumente. Dies kann durch die Bereitstellung eines Konstruktors erreicht werden, der ein String-Argument akzeptiert und das s-Feld automatisch initialisiert.
Das obige ist der detaillierte Inhalt vonWann sollten Sie das Schlüsselwort „new' für Java-Strings verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!