Há momentos que é necessário concatenar (juntar) uma grande quantidade de Strings em 
Java. Isso pode ser feito de duas maneiras simples, as duas listadas abaixo:
Pela junção com o operador mais +:
...
String x = stringY+stringZ;
...
Exemplo:
     public static void main(String args) {
        String texto = "Teste 01";
        for(int i=0;i<10000 br="" i="">        {
            texto=texto+" Teste "+i;
        }
    }
Pelo método concat da própria classe String:
String x = stringY.concat(stringZ);
Exemplo:
     public static void main(String args) {
        String texto = "Teste 01";
        for(int i=0;i<10000 br="" i="">        {
            texto=texto.concat(" Teste "+i);
        }
    }
Ambas as maneiras são válidas, porém, quando é necessário juntar uma grande quantidade de Strings, essas maneiras se tornam defasadas. Para tiramos melhor proveito, uma ótima saída é utilizar a classe StringBuilder.
Sintaxe:
StringBuilder nome = new StringBuilder();
nome.append(string);
Onde:
-  nome.append(String); → Método para concatenação da string.
Exemplo:
     public static void main(String args) {
        StringBuilder texto=new StringBuilder();
        for(int i=0;i<10000 br="" i="">        {
            texto.append("Teste "+i);
        }
    }
Comparativo
Abaixo, é possível ver uma classe que faz a comparação entre os tipos de concatenação acima.
public class Teste {
    public static void main(String args) {
        String texto = "Teste 01";
        long inicio = System.nanoTime();
        long diferenca;
        //**********************************************
        for(int i=0;i<10000 br="" i="">        {
            texto = texto+"Teste "+i;
        }
        diferenca = System.nanoTime()-inicio;
        System.out.printf("\n\nCom soma +");
        System.out.printf("\nTempo: %d ns",(diferenca));
        System.out.printf("\nTamanho: %d ns",texto.length());
        inicio = System.nanoTime();
        texto="";
        //**********************************************
        for(int i=0;i<10000 br="" i="">        {
            texto = texto.concat("Teste "+i);
        }
        diferenca = System.nanoTime()-inicio;
        System.out.printf("\n\nCom concat");
        System.out.printf("\nTempo: %d ns",(diferenca));
        System.out.printf("\nTamanho: %d ns",texto.length());
        //**********************************************
        StringBuilder texto2=new StringBuilder();
        inicio = System.nanoTime();
        for(int i=0;i<10000 br="" i="">        {
            texto2.append("Teste "+i);
        }
        diferenca = System.nanoTime()-inicio;
        System.out.printf("\n\nCom StringBuilder");
        System.out.printf("\nTempo: %d ns",(diferenca));
        System.out.printf("\nTamanho: %d ns",texto2.toString().length());
    }
}
Saída
Com soma +:
-  Tempo: 293225120 ns
-  Tamanho: 98898 ns
Com concat:
-  Tempo: 23470066971 ns
-  Tamanho: 98890 ns
Com StringBuilder:
-  Tempo: 4156625 ns
-  Tamanho: 98890 ns
Como foi possível ver, o método com StringBuilder é muito mais rápido do que as outras maneiras.
Fonte: 
Magus Code: Concatenando String de forma eficiênte em java
Nenhum comentário foi encontrado.