Concatenar Strings em Java
-
O operador
+
pode concatenar valores de vários tipos, enquantoconcat()
só pode concatenar valoresString
-
+
Gera uma novaString
se o valor estiver vazio, enquantoconcat()
retorna o mesmo valor -
+
Concatenaránull
, enquantoconcat()
lançará uma exceção -
+
Pode concatenar vários valores, enquantoconcat()
pode ter apenas um valor
Hoje, veremos as diferenças entre concat()
e o operador +
. Ambos são usados para concatenar Strings
, mas estamos aqui para descobrir o que os torna diferentes um do outro.
O operador +
pode concatenar valores de vários tipos, enquanto concat()
só pode concatenar valores String
A primeira grande diferença entre +
e concat()
é que podemos concatenar vários tipos de dados com uma String
usando o operador +
, mas o método concat()
é restrito a aceitar apenas uma String
Digite o valor.
Se examinarmos os bastidores, cada valor de qualquer tipo de dados é convertido em uma String
usando o método toString()
quando unimos valores usando +
.
O exemplo abaixo mostra que podemos juntar um int b
a uma String a
. Mas se tentarmos isso em concat()
, ocorrerá um erro de tempo de execução, pois não pode assumir um valor do 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
+
Gera uma nova String
se o valor estiver vazio, enquanto concat()
retorna o mesmo valor
A próxima grande diferença a notar é que o +
criará uma nova String
sempre que obtiver um valor, mesmo que o seu comprimento seja zero. Mas concat()
gera uma nova string apenas quando encontra que o comprimento do valor é maior que zero.
Isso pode mudar muito o resultado se quisermos comparar duas strings, como fizemos a seguir. A primeira comparação é feita quando a string é concatenada usando concat()
, enquanto a segunda comparação mostra o resultado da comparação de duas strings 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
, enquanto concat()
lançará uma exceção
No exemplo abaixo, podemos ver que se inicializarmos a variável b
com null
ela ainda concatenará sem nenhum erro. Isso acontece porque o operador +
converte todos os valores em String
e os 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);
}
}
Resultado:
String A-null
Ao contrário de +
quando concatenamos b
, que contém null
em a
, irá lançar uma NullPointerException
, que é a saída correta de uma forma geral.
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));
}
}
Resultado:
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)
+
Pode concatenar vários valores, enquanto concat()
pode ter apenas um valor
O operador +
pode juntar vários valores como estamos fazendo no exemplo a seguir. Ainda assim, como a função concat()
leva apenas um argumento, ela não pode concatenar mais de dois 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));
}
}
Resultado:
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