Concatenar Strings em Java

Rupam Yadav 12 outubro 2023
  1. O operador + pode concatenar valores de vários tipos, enquanto concat() só pode concatenar valores String
  2. + Gera uma nova String se o valor estiver vazio, enquanto concat() retorna o mesmo valor
  3. + Concatenará null, enquanto concat() lançará uma exceção
  4. + Pode concatenar vários valores, enquanto concat() pode ter apenas um valor
Concatenar Strings em Java

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 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

Artigo relacionado - Java String