Was Sie über die Verwendung von Strings in Java wissen müssen
Sobald Sie mit dem Erlernen von Java beginnen, wird die String-Klasse dank ihrer einzigartigen Eigenschaften Ihre Aufmerksamkeit auf sich ziehen.
Sie können Zeichenfolgen in Java einfacher als in anderen Sprachen erstellen und bearbeiten. Das liegt daran, dass die String-Klasse verschiedene Funktionen bietet.
Basierend auf diesen Funktionen gibt es verschiedene Methoden zum Generieren und Bearbeiten von Zeichenfolgen, je nach Ihren Vorlieben und Anforderungen. Ebenso hängt vieles von Ihrer Anwendung ab und davon, wo Zeichenfolgen verwendet werden müssen.
Wie unterscheiden sich Java-Strings?
Wenn Sie zuvor mit der Sprache C gearbeitet haben, wissen Sie, dass Zeichenfolgen in C ein Array von Zeichen (Zeichen) sind. Andererseits sind Java-Zeichenfolgen unveränderlich und enthalten Unicode-Zeichen.
Eine der Hauptfunktionen, die Zeichenfolgen in Java einzigartig machen, ist die Verkettung. Verwenden Sie einfach den Additionsoperator "+", um zwei oder mehr Zeichenfolgen zu verbinden. Dies können Sie mit anderen Java-Objekten wie Point oder Circle nicht tun.
Wie bereits erwähnt, sind Java-Zeichenfolgen unveränderlich, dh Sie können sie nicht ändern. Beispielsweise generieren Methoden wie toUpperCase () und toLowerCase () eine völlig neue Zeichenfolge, anstatt Änderungen am vorhandenen Zeichenfolgeninhalt vorzunehmen. Jetzt gibt Ihr Code diese neu generierte Zeichenfolge zurück.
Ein weiterer Bereich, in dem Zeichenfolgen unterschiedlich sind, ist die Verwendung von Nullzeichen zum Beenden von Zeichenfolgen in Sprachen wie C. In Java sind Zeichenfolgen Objekte, die von Zeichenarrays unterstützt werden. Wenn Sie den Inhalt Ihrer Zeichenfolge so lesen möchten, wie Zeichenarrays sie darstellen, erledigen Sie die Aufgabe mit der toCharArray () -Methode.
Das Vergleichen von Zeichenfolgen in Java ist auch bequemer als in anderen Programmiersprachen. Anstatt einen langen Codeblock zum Vergleichen von Zeichenfolgen zu schreiben, können Sie die equals () -Methode verwenden, um zwei oder mehr Zeichenfolgen zu vergleichen, die in einem beliebigen Programm verwendet werden. Dies liegt hauptsächlich daran, dass in Java die Methode equals von der String-Klasse überschrieben wird, was den String-Vergleich zum Kinderspiel macht.
In ähnlicher Weise ist die Suche in Teilzeichenfolgen in Java ebenfalls problemlos. Während Sie reguläre Ausdrücke oder Methoden wie lastIndexOf () und indexOf () verwenden, können Sie Segmente von Zeichenfolgen durchsuchen und Werte zurückgeben, sobald eine Übereinstimmung identifiziert wurde. Sie können auch reguläre Ausdrücke verwenden, um verschiedene Zeichenfolgen zu trimmen, zu teilen und sie einzeln für eine Vielzahl von Verwendungszwecken in jedem Programm zu verwenden.
Wie werden Strings im Speicher gespeichert?
Nachdem Sie nun wissen, was Strings in Java anders und nützlich macht, wollen wir die String-Klasse untersuchen. Wenn Sie ein oder zwei Dinge über die Speicherverwaltung in Java wissen, müssen Sie sich mit den beiden Schlüsselentitäten befasst haben: Heap und Stack.
Der Stack wird verwendet, um Prozesse und Operationen auszuführen, nachdem er von einem Java-Programm aufgerufen wurde, während der Heap Inhalte speichert, die zum effektiven Ausführen und Ausführen von Code erforderlich sind. Wie ist die Speicherverwaltung bei Zeichenfolgen relevant?
Dies liegt daran, dass die String-Klasse und die String-Literale in Java unterschiedlich behandelt werden. Dies gibt an, dass Zeichenfolgenliteralen eindeutiger Speicherplatz im Heapspeicher zugewiesen wird, der als Zeichenfolgenkonstantenpool bezeichnet wird. Wenn Sie zum Erstellen von Zeichenfolgenobjekten in Java Zeichenfolgenliterale verwenden, werden diese daher im Zeichenfolgenkonstantenpool gespeichert.
Im Gegenteil, wenn Sie das neue Schlüsselwort zum Erstellen von Zeichenfolgenobjekten verwenden, behandelt Java diese wie jedes andere Objekt und sendet sie zur Speicherung an den Heap.
Beispiel für String-Literale
Nachdem Sie nun genug über Zeichenfolgenobjekte wissen, gehen wir ein Beispiel für Zeichenfolgenliterale durch:
public class muostrings {
public static void main(String args[])
{
String himuo = "Hello World from MUO";
System. out .println (himuo);
}
}
Hier hat das String-Literal das String-Objekt mit dem Inhalt „Hello World from MUO“ erstellt. Java sendet dieses Objekt an den String Constant Pool.
Verwenden des neuen Schlüsselworts
Sie können das neue Schlüsselwort auch zum Generieren von String-Objekten verwenden.
Das String-Objekt des Strings "himuo" mit dem Inhalt "Hello World from MUO" wurde von einem String-Literal generiert und wird an den String Constant Pool gesendet. In ähnlicher Weise können Zeichenfolgenobjekte auch mit dem neuen Schlüsselwort wie folgt erstellt werden:
public class muostringsobj {
public static void main(String args[]) {
char [] strArr = { 'M', 'O', 'U'};
String jStr = new String(strArr);
System. out .println( jStr );
}
}
Im obigen Beispiel wird das neue Schlüsselwort verwendet, um ein Zeichenfolgenobjekt zu erstellen. Wie bereits erläutert, werden sie an den Heap gesendet, wo sie mit anderen Variablen und Objekten gespeichert werden, die darauf warten, vom Programm ausgeführt zu werden.
Inzwischen müssen Sie zu Recht neugierig auf den String Constant Pool sein. Es weist Objekten basierend auf dem Inhalt des Zeichenfolgenobjekts Poolspeicherplatz zu. Nachdem der String Constant Pool Objekte empfangen hat, überprüft er diese, um festzustellen, ob zwei Objekte genau denselben Inhalt enthalten.
Können zwei String-Objekte denselben Inhalt speichern?
Wenn ein Zeichenfolgenliteral zum Erstellen eines neuen Objekts verwendet wird, überprüft Java Virtual Machine (JVM) den Objektinhalt und bewertet, ob er bereits im Pool vorhanden ist. Wenn ein Objekt Inhalt enthält, der bereits im Pool vorhanden ist, wird die Objektreferenz zurückgegeben, ohne das neue Objekt zu erstellen. Wenn Sie das neue Objekt erstellen müssen, müssen Sie sicherstellen, dass der Inhalt eindeutig und eindeutig ist.
Wenn Sie jedoch das neue Schlüsselwort verwenden, um eine neue Zeichenfolge zu erstellen, wird diese anders verarbeitet. Wenn Sie das neue Schlüsselwort zum Erstellen einer neuen Zeichenfolge verwenden, wird diese generiert, unabhängig davon, ob sie denselben Inhalt wie die vorhandene Zeichenfolge enthält.
Dies zeigt an, dass zwei vorhandene Zeichenfolgenobjekte, die im Heapspeicher gespeichert sind, denselben Inhalt enthalten dürfen. Dies unterscheidet sich von Zeichenfolgenobjekten, die im String Constant Pool gespeichert sind. Sie können dies auch mit dem Operator "==" beweisen. Es wird true zurückgegeben, wenn zwei Objekte mit derselben physischen Adresse verglichen werden.
public class comparingStrngs {
public static void main(String[] args)
{
String firstLiteral = "muo1";
String secondLiteral = "muo1";
System. out .println(firstLiteral == secondLiteral);
String firstKeyword = new String("muo2");
String secondKeyword = new String("muo2");
System. out .println(firstKeyword == secondKeyword);
}
}
Jetzt können Sie Strings in Java leicht verstehen
In diesem Artikel haben Sie erfahren, wie sich Zeichenfolgen in Java unterscheiden, wie Zeichenfolgen in Java verwendet werden, wie Speicherzeichenfolgen in Java verwaltet werden und wie die Zeichenfolgen funktionieren. Um Ihr Verständnis zu testen, schreiben Sie ein Java-Programm, um zwei Zeichenfolgen zu verketten.