Definition

Java String

Ein Java String ist eine Folge von Zeichen, die als Objekt der Klasse java.lang existiert. Java Strings werden mit Hilfe der String-Klasse erstellt und bearbeitet. Einmal erstellt, ist ein String unveränderlich.

Ein String ist eine Zeichenfolge. Eine Klasse ist eine benutzerdefinierte Vorlage für die Erstellung eines Objekts. Eine String-Klasse ist eine benutzerdefinierte Vorlage für die Erstellung und Bearbeitung von String-Objekten, die aus einer Folge von Zeichen bestehen.

Die Methoden der String-Klasse ermöglichen folgende Fähigkeiten:

  • Untersuchen einzelner Zeichen in der Zeichenkette
  • Vergleichen von Strings
  • das Durchsuchen von Strings
  • Kopieren von Strings mit Zeichen, die von Großbuchstaben in Kleinbuchstaben oder umgekehrt umgewandelt wurden.

Erstellen eines String

Im Folgenden finden Sie eine einfache Syntax für die Erstellung eines Java String:

String greeting = "Hello world!";

In diesem Beispiel ist Hello world! ein String-Literal, das heißt eine Reihe von Zeichen, die in Anführungszeichen eingeschlossen sind. Der Compiler erstellt ein Objekt mit diesem Wert, und der String-Wert wird in den Quellcode eines Computerprogramms geschrieben.

Jedes Mal, wenn eine neue Variable oder ein neues Objekt erstellt wird, wird es im Speicher des Computers abgelegt.

Der Speicher ist in zwei übergeordnete Blöcke unterteilt, den Stack und den Heap. Java speichert Objektwerte im Heap-Speicher. Verweise auf den Wert werden im Stack gespeichert.

Eine andere Möglichkeit, einen String zu erstellen, ist die Verwendung des Schlüsselworts new, wie im folgenden Beispiel:

String s1 = new String("Hello world!");

Dieser Code erzeugt ein String-Objekt s1 und eine Referenzvariable.

Wie bereits erwähnt, sind Java Strings unveränderlich. Einmal erstellt, kann eine Zeichenkette mit der String-Klasse nicht mehr geändert werden. Jeder Änderungsversuch erzeugt eine neue String-Instanz.

Benutzer können grundlegende Operationen durchführen, wie zum Beispiel den Vergleich von Strings. Die Methode .equals() wird verwendet, um Strings zu vergleichen, wie im folgenden Beispiel:

String str = "one";

String st = "one";

System.out.println (str.equals(st));

Der obige Code vergleicht die beiden Werte jedes String, um festzustellen, ob sie gleich sind. In diesem Fall sind sie gleich, also gibt das Java-Programm den booleschen Wert true zurück.

Typen von Zeichenketten in Java

Java unterscheidet zwischen einem primitiven String und einem Objekt-String:

  • Primitiver String. Dies sind String-Literale oder String-Aufrufe aus einem Nicht-Konstruktor-Kontext. Ein Konstruktor ist eine spezielle Methode, um Objekte zu initialisieren. Primitive Strings sind keine Objekte und haben keine Methoden oder Eigenschaften. Sie werden auf der niedrigsten Ebene der Sprachimplementierung dargestellt.
  • Objekt-String. Dies sind Strings, die mit dem new-Operator erstellt werden. Objekt-Strings erzeugen zwei Objekte, während ein primitiver String nur ein Objekt erzeugt. Objekt-Strings erzeugen das String-Literal und die Variable, die darauf verweist.

Die beiden String-Typen werden unterschiedlich im Speicher abgelegt.

Wenn ein String-Literal erstellt wird, prüft die Java Virtual Machine (JVM) den String-Pool, um festzustellen, ob es bereits existiert. Der String-Konstanten-Pool ist ein Speicherbereich, in dem Strings gespeichert werden. Ist der Wert vorhanden, belegt das String-Literal den vorhandenen Wert. Ist der Wert nicht vorhanden, erstellt die JVM einen neuen String und fügt sie dem Pool hinzu.

Der String-Konstanten-Pool befindet sich im Heap-Speicher. Wenn ein Objekt-String erstellt wird, geht der Teil zwischen den Anführungszeichen in den String-Konstanten-Pool. Die dem String zugewiesene Variable wird auf dem Stack gespeichert und der String im Pool zugeordnet.

Der Speicher-Heap bietet globalen Zugriff auf alle im Heap gespeicherten Daten während der gesamten Lebensdauer der Java-Anwendung. Alle Objektwerte werden im Heap gespeichert, einschließlich String-Literale, die im String-Konstanten-Pool innerhalb des Heap gespeichert werden. Primitive Variablen und Verweise auf Strings werden auf dem Stack gespeichert und mit Werten im Heap abgeglichen.

Stack und Heap-Speicher
Abbildung 1: Verweise auf Objekte befinden sich auf dem Stack. Die Objekte selbst befinden sich auf dem Heap. String-Werte befinden sich im String-Pool innerhalb des Heap.

Beispiel für ein Java-String-Objekt

In Java ist ein String ein Objekt, das eine Reihe von Zeichenwerten darstellt. Jeder Buchstabe in der Zeichenkette ist ein separater Zeichenwert, aus dem das Java-String-Objekt besteht. Zeichen in Java werden durch die char-Klasse dargestellt. Benutzer können eine Reihe von char-Werten schreiben, die dasselbe bedeuten wie ein String.

Das folgende Beispiel zeigt, wie Zeichenwerte das char-Array ch bilden:

char[] ch = {'t','e','c','h','t','a','r','g','e','t'};

String s2 = new String (ch);

Dies bedeutet das Gleiche wie folgendes Beispiel:

String s2 = "techtarget";

In diesem Beispiel wird jeder Buchstabe des String durch ein Zeichen dargestellt. Obwohl Strings, die mit der String-Klasse erstellt werden, unveränderlich sind, können Strings, die mit Zeichenkombinationen erstellt werden, geändert werden. Es gibt mehrere Utility-String-Methoden, die zur Änderung von Strings verwendet werden können, darunter split(), toLowerCase(), toUpperCase(), length() und valueOf(). Diese String-Methoden können folgendes:

  • Strings an einer bestimmten Stelle aufteilen, zum Beispiel an Leerzeichen
  • die Zeichenkette in Groß- oder Kleinbuchstaben umwandeln
  • die Länge des String angeben
  • den Wert eines bestimmten Zeichens in einem String angeben

Im Folgenden wird die Verwendung von valueOf() zur Bestimmung des Wertes eines Buchstabens im obigen char-Array ch gezeigt.

public class StringValueOfExample5 {

public static void main(String[] args) {

     char[] ch = {'t','e','c','h','t','a','r','g','e','t'};

     String s2 = new String (ch);

     String v = String.valueOf(ch[1]);

      System.out.println(v);

   }

}

Das obige Beispiel gibt den Wert der ersten Position im String ch aus. Die genaue Print-Anweisung lautet: e.

Utility-Methoden wie valueOf() und toLowerCase() werden nur bei unveränderlichen Strings verwendet. Sie führen Operationen an Strings durch, verändern aber nicht die Zeichenkette selbst. Um veränderbare Strings zu erstellen, die geändert werden können, werden die Klassen StringBuilder() und StringBuffer() verwendet.

Im Folgenden finden Sie Beispiele für die Veränderbarkeit von Strings mit diesen Klassen.

String-Konkatenation, also das Verbinden von Strings, kann mit der Methode append() durchgeführt werden, um den Satz Ben isst Gemüse anzuzeigen.

class Beispiel {

  public static void main(String args[]) {

    StringBuilder x = new StringBuilder("Ben ");

    x.append("isst Gemüse");

    System.out.println(x);

  }

}

Umkehrung eines String mit der Methode reverse(), um esümeG tssi neB auszugeben.

class Beispiel{

   public static void main (String args[]) {

       StringBuilder x = new StringBuilder ("Ben isst Gemüse");

       x.reverse();

       System.out.println(x);

   }

}

Löschen Sie einen bestimmten Teil eines String mit der Methode delete(). Dies gibt nur das Wort Gemüse aus.

class Beispiel {

  public static void main (String args[]) {

    StringBuilder x = new StringBuilder ("Ben isst Gemüse");

    sb.delete(1, 9);

    System.out.println(x)

  }

}

Die Klassen und StringBuffer() sind ähnlich, allerdings ist StringBuilder() neuer und nicht Thread-sicher, das heißt er kann nicht von mehreren Threads gleichzeitig verwendet werden.

Diese Definition wurde zuletzt im September 2022 aktualisiert

Erfahren Sie mehr über Softwareentwicklung