Strings in Java vergleichen

K. Macharia 12 Oktober 2023
  1. Vergleichen von Zeichenketten in Java mit der Methode compareTo()
  2. Die Methode des Gleichheitsoperators ==
  3. Die Methode equals()
  4. Die equals() Methode Case Sensitivity
  5. Die Methode contentEquals()
Strings in Java vergleichen

Fast alle Java-Entwickler werden irgendwann einmal zwei Strings vergleichen müssen, um die Logik einer Anwendung zu vervollständigen. Eine String-Variable ist eine Sammlung von Zeichen. Um die Vergleichsoperationen zu verstehen, die mit einem String möglich sind, müssen wir zunächst die Eigenschaften einer Zeichenkette verstehen.

  1. Strings sind unveränderlich. Das bedeutet, dass sie nicht wachsen können und jede Änderung an einer Zeichenkette dazu führt, dass eine neue Zeichenkette gebildet wird. Das liegt daran, dass sie intern durch char-Arrays unterstützt werden, die unveränderlich sind.
  2. Wann immer wir sagen, dass eine Zeichenkette erstellt wird, werden zwei Objekte in verschiedenen Speicherbereichen erstellt. Eines wird im Heap-Bereich erstellt, während das zweite im String-Konstanten-Pool erstellt wird. Die String-Referenz verweist die Maschine auf das Objekt im Heap-Bereich.

Ein Beispiel,

String mystring = "World"

In diesem Fall zeigt mystring auf den Heap-Bereich, in dem der String World gespeichert ist.

Nachfolgend sind die vier Methoden zum Vergleichen von Strings in Java aufgeführt und werden in diesem Artikel ausführlich erklärt:

  1. Die Methode compareTo()
  2. Der Gleichheitsoperator ==
  3. Die Methode equals()
  4. Die Methode contentEquals()

Vergleichen von Zeichenketten in Java mit der Methode compareTo()

Sie vergleicht zwei Zeichenketten lexikografisch. Sie arbeitet, indem sie zunächst jedem Zeichen in der Zeichenkette einen Unicode-Wert zuweist und dann die Zeichenketten vergleicht. Dieser Prozess gibt das Ergebnis als Null, eine positive oder negative Zahl zurück.

  1. Das Ergebnis ist Null, wenn die beiden verglichenen Zeichenketten lexikografisch gleich sind.
  2. Das Ergebnis ist positiv, wenn die erste Zeichenkette größer als die zweite Zeichenkette ist.
  3. Das Ergebnis ist negativ, wenn die zweite Zeichenkette größer als die erste Zeichenkette ist.

Es gibt zwei Möglichkeiten, die Methode compareTo() zu verwenden.

Zwei Zeichenketten literal vergleichen

Lassen Sie uns String1 und String2 vergleichen. Das Ergebnis, das wir durch den Vergleich dieser beiden Zeichenketten erhalten, ist ein int-Typ. Beispiel:

public class CompareToCode {
  public static void main(String args[]) {
    String string1 = "now";
    String string2 = "now";
    int result = string1.compareTo(string2);
    System.out.println(result);
  }
}

Ausgabe:

0

Vergleich zwischen einer Zeichenkette und einem Objekt

Die Methode compareTo() ermöglicht auch den Vergleich von nicht referenzierten Objekten mit einer Zeichenkette. Beispiel:

public class CompareTo {
  public static void main(String args[]) {
    String string1 = "now";
    int result = string1.compareTo("now");
    System.out.println(result);
  }
}

Ausgabe:

0

compareTo() Unterscheidung von Groß- und Kleinschreibung

Die Methode compareTo() ist case-sensitiv. Das heißt, selbst wenn zwei Zeichenketten gleich sind, zeigt sie sie als unterschiedlich an, wenn sie nicht einheitlich sind. Beispiel:

public class CompareTo {
  public static void main(String args[]) {
    String string1 = "hello";
    String string2 = "HELLO";
    int result = string1.compareTo(string2);
    System.out.println(result);
  }
}

Ausgabe:

-32

Die Welt hello und HELLO werden unterschiedlich behandelt, und so erhalten wir ein Ergebnis von -32.

Eine andere Methode in dieser String-Klasse ignoriert jedoch die Groß- und Kleinschreibung - compareToIgnoreCase(). Beispiel:

public class CompareToIgnoreCase {
  public static void main(String args[]) {
    String string1 = "hello";
    String string2 = "HELLO";
    int result = string1.compareToIgnoreCase(string2);
    System.out.println(result);
  }
}

Ausgabe:

0

Die Methode des Gleichheitsoperators ==

Es handelt sich um eine Java-String-Vergleichsmethode, die vergleicht, ob sich zwei Objekte an der gleichen Speicherstelle befinden. Beispiel:

public class EqualityOperator {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("Wow");
    System.out.println(oneS == twoS);
  }
}

Ausgabe:

false

Der == Operator vergleicht die Objekte oneS und twoS, um zu prüfen, ob sie gleich sind. Die beiden Strings, oneS und twoS sind unterschiedliche Referenzen und geben daher false zurück. oneS und twoS sind zwei verschiedene Objekte. Sie haben aber beide den gleichen Wert in sich.

Die Methode equals()

Dies ist eine Methode, mit der zwei Zeichenketten in Java anhand ihres Wertes verglichen werden können. Die Ausgabe dieser Methode ist entweder true oder false. Wenn die zu vergleichenden Zeichenketten nicht durch den Wert gleich sind, dann gibt die Methode false zurück. Wenn die zu vergleichenden Zeichenketten gleich sind, gibt die Methode true zurück. Zum Beispiel,

public class Equals {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("Wow");
    System.out.println(oneS.equals(twoS));
  }
}

Ausgabe:

true

Die equals() Methode Case Sensitivity

Die Methode equals() unterscheidet zwischen Groß- und Kleinschreibung und sieht daher gleiche Wörter mit unterschiedlicher Schreibweise als unterschiedliche Wörter an. Ein Beispiel:

public class Equals {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("WOW");
    System.out.println(oneS.equals(twoS));
  }
}

Ausgabe:

false

Im obigen Fall gibt wow im Vergleich zu WOW mit der Methode equals() false zurück.

Wenn Sie jedoch die Methode equals() verwenden und die Groß-/Kleinschreibung nicht berücksichtigen wollen, verwenden Sie die Methode equalsToIgnoreCase(). Für das obige Beispiel würde equalsIgnoreCase() true zurückgeben.

public class EqualsIgnorecase {
  public static void main(String args[]) {
    String oneS = new String("Wow");
    String twoS = new String("WOW");
    System.out.println(oneS.equalsIgnoreCase(twoS));
  }
}

Ausgabe:

true

Die Methode contentEquals()

Dies ist ebenfalls eine Java-String-Vergleichsmethode, die einen String-Puffer und einen String vergleicht und entweder false oder true zurückgibt. Wenn die Zeichenkette mit dem String-Puffer, mit dem sie verglichen wird, übereinstimmt, gibt die Methode true zurück. Wenn die Zeichenkette nicht mit dem Zeichenkettenpuffer übereinstimmt, mit dem sie verglichen wird, gibt die Methode false zurück.

Beispiel:

public class ContentEquals {
  public static void main(String args[]) {
    String firstS = new String("Here we are");
    StringBuffer secondS = new StringBuffer("Here we are");
    System.out.println(firstS.contentEquals(secondS));
  }
}

Ausgabe:

true

Verwandter Artikel - Java String