Concatenar Strings em Java
-
O operador
+pode concatenar valores de vários tipos, enquantoconcat()só pode concatenar valoresString -
+Gera uma novaStringse 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