Verketten von Zeichenketten in Java

Rupam Yadav 12 Oktober 2023
  1. Der + Operator kann Werte mehrerer Typen verketten, während concat() nur String-Werte verketten kann
  2. + erzeugt einen neuen String, wenn der Wert leer ist, während concat() den gleichen Wert zurückgibt
  3. + wird null konkatenieren, während concat() eine Exception wirft
  4. + kann mehrere Werte verketten, während concat() nur einen Wert annehmen kann
Verketten von Zeichenketten in Java

Heute werden wir uns die Unterschiede zwischen concat() und dem +-Operator ansehen. Beide werden verwendet, um Strings zu verketten, aber wir sind hier, um herauszufinden, wodurch sie sich voneinander unterscheiden.

Der + Operator kann Werte mehrerer Typen verketten, während concat() nur String-Werte verketten kann

Der erste große Unterschied zwischen + und concat() ist, dass wir mit dem +-Operator mehrere Datentypen mit einem String verketten können, aber die Methode concat() ist darauf beschränkt, nur einen Wert vom Typ String zu akzeptieren.

Wenn wir unter die Haube schauen, wird jeder Wert eines beliebigen Datentyps mit der Methode toString() in einen String konvertiert, wenn wir Werte mit + verbinden.

Das folgende Beispiel zeigt, dass wir einen int b mit einem String a verbinden können. Aber wenn wir dies mit concat() versuchen, gibt es einen Laufzeitfehler, da es einen Wert vom Typ int nicht annehmen kann.

package com.company;

public class Main {
  public static void main(String[] args) {
    String a = "String A-";
    int b = 5;

    System.out.println(a + b);
  }
}

Ausgabe:

String A-5

+ erzeugt einen neuen String, wenn der Wert leer ist, während concat() den gleichen Wert zurückgibt

Der nächste große Unterschied, den es zu beachten gilt, ist, dass + jedes Mal einen neuen String erzeugt, wenn es einen Wert erhält, auch wenn dessen Länge null ist. Aber concat() erzeugt nur dann eine neue Zeichenkette, wenn es feststellt, dass die Länge des Wertes größer als Null ist.

Das kann das Ergebnis stark verändern, wenn wir zwei Zeichenketten vergleichen wollen, wie wir es unten getan haben. Der erste Vergleich wird durchgeführt, wenn die Zeichenkette mit concat() konkateniert wird, während der zweite Vergleich das Ergebnis des Vergleichs zweier mit + konkatenierter Zeichenketten zeigt.

package com.company;

public class Main {
  public static void main(String[] args) {
    String a = "String A";
    String b = "";

    String d = a.concat(b);
    if (d == a) {
      System.out.println("String d and a are equal using concat");
    } else {
      System.out.println("String d and a are NOT equal using concat");
    }

    String e = a + b;
    if (e == a) {
      System.out.println("String e and a are equal using plus operator");
    } else {
      System.out.println("String e and a are NOT equal plus operator");
    }
  }
}

Ausgabe:

String d and a are equal using concat
String e and a are NOT equal plus operator

+ wird null konkatenieren, während concat() eine Exception wirft

Im folgenden Beispiel können wir sehen, dass, wenn wir die Variable b mit null initialisieren, die Verkettung trotzdem ohne Fehler durchgeführt wird. Dies geschieht, weil der +-Operator jeden Wert in String konvertiert und dann zusammenfügt.

package com.company;

public class Main {
  public static void main(String[] args) {
    String a = "String A-";
    String b = null;

    System.out.println(a + b);
  }
}

Ausgabe:

String A-null

Wenn wir im Gegensatz zu + die Variable b, die null enthält, mit a verketten, wird eine NullPointerException geworfen, was im Allgemeinen die richtige Ausgabe ist.

package com.company;

public class Main {
  public static void main(String[] args) {
    String a = "String A-";
    String b = null;

    System.out.println(a.concat(b));
  }
}

Ausgabe:

Exception in thread "main" java.lang.NullPointerException
	at java.base/java.lang.String.concat(String.java:1937)
	at com.company.Main.main(Main.java:14)

+ kann mehrere Werte verketten, während concat() nur einen Wert annehmen kann

Der +-Operator kann mehrere Werte zusammenfügen, wie wir es im folgenden Beispiel tun. Da die Funktion concat() jedoch nur ein Argument annimmt, kann sie nicht mehr als zwei Werte verketten.

package com.company;

public class Main {
  public static void main(String[] args) {
    String a = "String A-";
    String b = "String B-";
    String c = "String C";

    System.out.println(a + b + c);

    System.out.println(a.concat(b));
  }
}

Ausgabe:

String A-String B-String C
String A-String B-
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java String