Java String concatenation é uma operação para unir duas ou mais strings e retornar uma nova. Além disso, a operação de concatenação pode ser usada para converter tipos em strings. Você pode concatenar strings em Java de duas maneiras diferentes.
método concat()
O método Concat() anexa a string especificada no final da string fornecida e, em seguida, retorna e retorna uma nova string formada. Claro que podemos usar o método concat() para unir três ou mais strings.A assinatura do método concat()
public String concat(String str)
O método concatena a string str no final da string atual. Por exemplo:
String s1 = “Hello ”;
s1.concat("World")
retorna uma nova string “Hello World”.
Exemplo de método Concat()
Vamos concatenar duas strings após sua inicialização e depois concatenar mais strings. E mais um exemplo interessante: vamos criar um método que retornaria diferentes mensagens de acordo com o argumento.public class ConcatTest {
public static void main(String[] args) {
//String concat with concat() method
String string1 = "I learn ";
String string2 = "concatenation in Java";
//here we use concat() method to join the two strings above
String result = string1.concat(string2);
System.out.println(result);
//concat() method to join 4 strings
String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
System.out.println(myWebSite); // here we've got "CodeGym.cc/quest"
System.out.println(myMessage(true));
System.out.println(myMessage(false));
}
private static String myMessage(boolean b) { //concat() method with selection statement
return "I have".concat(b ? " " : "n't ").concat("got it");
}
}
A saída é:
Eu aprendo concatenação em Java CodeGym.cc/quest Eu entendi Eu não entendi
É importante saber que o método concat() não altera a string, mas cria uma nova como resultado da fusão da atual com a passada como parâmetro. Portanto, o método retorna um novo objeto String , é por isso que você pode criar cadeias tão longas de String concat.
Concatenação usando operadores sobrecarregados "+" e "+="
Você pode usar esses dois operadores da mesma forma que com números. Eles funcionam exatamente como concat() . Vamos concatenar a string “Code” e a string “Gym”.public class StringConcat {
public static void main(String[] args) {
String myString = "Code" + "Gym";
myString+= ".cc";
System.out.println(myString);
}
}
Normalmente Java não permite operações de sobrecarga para classes de usuário, mas esses dois operadores funcionam como sobrecarregados. Você pode pensar que dentro do operador + está escondido concat() , mas, na verdade, outro mecanismo é usado aqui. Se olharmos o bytecode do programa Java, veremos que StringBuilder foi criado e seu método append() é usado. O compilador Java vê o operador “+” e percebe que os operandos são strings, não tipos primitivos. Então funciona como concat.
public class StringTest2 {
public static void main(String[] args) {
String hello = "hello";
String world = " world!";
String helloworld = (new StringBuilder().append(hello).append(world).toString());
System.out.println(helloworld);
//this is the same as:
String result = hello + world;
}
}
Concat(0) ou + ?
Se você precisar mesclar strings apenas uma vez, use o método concat() . Para todos os outros casos, é melhor usar o operador + ou Stringbuffer / StringBuilder . Além disso, o operador + é usado para converter tipos. Se um dos operandos for igual, por exemplo, o número e o segundo for uma string, na saída obteremos uma string. Exemplo:public class StringConcat {
public static void main(String[] args) {
int myInt = 5;
String myString = " days";
System.out.println(myInt + myString);
boolean b = (myInt + myString) instanceof String;
System.out.println(b);
}
}
Usamos instanceof para verificar se (myInt + myString) é uma String. Aqui está a saída deste programa:
5 dias verdadeiro
Observe também que o operador + e concat() funcionam de maneira diferente se uma das strings for nula. Se um dos operandos ao usar o operador + ou += for apenas um — uma string, então, como já dissemos, ocorre a conversão de tipo. O mesmo se aplica a null. Vamos apenas obter uma nova string:
public class StringConcat {
public static void main(String[] args) {
String myString = "book ";
System.out.println(myString + null);
System.out.println((myString + null) instanceof String);
}
}
A saída é:
livro nulo verdadeiro
Se aplicarmos o método concat() para a mesma operação, obteremos um NullPointerException .
public class StringConcat {
public static void main(String[] args) {
String myString = "book ";
System.out.println(myString.concat(null));
}
}
A saída é:
Exceção no encadeamento "main" java.lang.NullPointerException em java.base/java.lang.String.concat(String.java:1972) em StringConcat.main(StringConcat.java:6)