Concatenar cadenas en Java

Rupam Yadav 12 octubre 2023
  1. El operador + puede concatenar valores de múltiples tipos, mientras que concat() sólo puede concatenar valores de String
  2. + genera una nueva String si el valor está vacío, mientras que concat() devuelve el mismo valor
  3. + Concatenará null, mientras que concat() lanzará una excepción
  4. + puede concatenar múltiples valores, mientras que concat() sólo puede tomar un valor
Concatenar cadenas en Java

Hoy veremos las diferencias entre concat() y el operador +. Ambos se utilizan para concatenar Strings, pero estamos aquí para encontrar lo que los hace diferentes el uno del otro.

El operador + puede concatenar valores de múltiples tipos, mientras que concat() sólo puede concatenar valores de String

La primera gran diferencia entre + y concat() es que podemos concatenar múltiples tipos de datos con un String utilizando el operador +, pero el método concat() está restringido a tomar sólo un valor de tipo String.

Si miramos bajo el capó, cada valor de cualquier tipo de datos se convierte en un String usando el método toString() cuando unimos valores usando +.

El siguiente ejemplo muestra que podemos unir un int b a un String a. Pero si lo intentamos con concat(), dará un error de ejecución ya que no puede tomar un valor de tipo int.

package com.company;

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

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

Resultado:

String A-5

+ genera una nueva String si el valor está vacío, mientras que concat() devuelve el mismo valor

La siguiente gran diferencia a destacar es que + creará una nueva String cada vez que obtenga un valor, incluso si su longitud es cero. Pero concat() genera una nueva cadena sólo cuando encuentra que la longitud del valor es mayor que cero.

Esto puede cambiar mucho el resultado si queremos comparar dos cadenas, como hemos hecho a continuación. La primera comparación se realiza cuando la cadena se concatena usando concat(), mientras que la segunda comparación muestra el resultado de comparar dos cadenas concatenadas por +.

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");
    }
  }
}

Resultado:

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

+ Concatenará null, mientras que concat() lanzará una excepción

En el siguiente ejemplo, podemos ver que si inicializamos la variable b con null se concatenará sin ningún error. Esto sucede porque el operador + convierte cada valor en String y luego los une.

package com.company;

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

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

Producción :

String A-null

A diferencia de + cuando concatenamos b, que tiene null en ella a a, lanzará una NullPointerException, que es la salida correcta de forma general.

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));
  }
}

Producción :

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)

+ puede concatenar múltiples valores, mientras que concat() sólo puede tomar un valor

El operador + puede unir múltiples valores como estamos haciendo en el siguiente ejemplo. Sin embargo, como la función concat() sólo toma un argumento, no puede concatenar más de dos valores.

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));
  }
}

Producción :

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

Artículo relacionado - Java String