Concatenar cadenas en Java
-
El operador
+
puede concatenar valores de múltiples tipos, mientras queconcat()
sólo puede concatenar valores deString
-
+
genera una nuevaString
si el valor está vacío, mientras queconcat()
devuelve el mismo valor -
+
Concatenaránull
, mientras queconcat()
lanzará una excepción -
+
puede concatenar múltiples valores, mientras queconcat()
sólo puede tomar un valor
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn