sábado, 29 de julho de 2017

StringBuilder - inicialização e concatenação

Quando precisamos trabalhar com objetos do tipo String
onde desempenho e flexibilidade são indispensáveis,
e onde não há necessidade de sincronização de seus métodos,
recorremos a Classe StringBuilder.
dados de Strings são criados e manipulados através
desta classe de forma dinâmica, onde modificar
é um dos pontos de maior vantagem da StringBuilder.
Todos já sabemos que Strings são imutáveis,
isto é, seu valor não pode ser alterado após
a atribuição, então parece um tanto confuso
entender como conseguimos concatenar novas strings
a atribuída na declaração.
Na verdade o que ocorre é que novos objetos são criados
na memória, fazendo com que o processamento fique
mais carregados.
A concatenação de String através de StringBuilder,
é feita invocando o método append que aloca nova strings
más não são feitas novas cópias dos objetos já criados.
Se as Strings são imutáveis, o StringBuilder é mutável,
e as concatenações são realmente feitas, e a criação
de novos objetos na memória não se fez necessário,
como quando concatenamos String com o método concat
da classe String.
Se a parte teórica da StringBuilder parece tediosa e complicada
sua parte prática não oferece nenhuma complicação,
então porque não mostrarmos agora um exemplo começando
por exibir uma concatenação com o método append?

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:

public class PROJETO {
     public static void Inform ( ) {
         J jht = new J ( );
         // ////////////////////////////////////////////////////
         // Parâmetros da função printfx
         // Coord x, Coord y, String, cor de frente, cor de fundo,
         // Comprimento, Tempo, frequência, duração.
         jht.printfx ( 22, 18, "Por: ", 12, 15, 5, 0, 1000, 200 );
         jht.printfx ( 27, 18, "Samuel Lima", 9, 15, 11, 0, 0, 0 );
         jht.printfx ( 22, 19, "sa_sp10@hotmail.com", 0, 15, 20, 1800, 0, 0 );
         jht.printfx ( 35, 22, "MUITO OBRIGADO", 12, 15, 15, 0, 0, 0 );
     }

     public static void main ( String [ ] args ) throws Exception {
         J jht = new J ( );
         int i;
         jht.Moldura ( 1, 24, 2, 78, 15 );
         jht.poscolor ( 20, 2, 12, 15 );//StringBuilder
         System.out.println ( "STRINGBUILDER - INICIALIZAÇÃO E CONCATENAÇÃO" );
         // //////////////////////////////////////////////////////////
         StringBuilder str = new StringBuilder (
                   "Engenharia\n\t\t\t");
         str.append("Medicina\n\t\t\t");
         str.append("Arquitetura\n\t\t\t");
         str.append("Jornalismo\n\t\t\t");
         str.append("Biologia\n\t\t\t");
         // //////////////////////////////////////////////////////////
         jht.poscolor ( 20, 4, 9, 15 );
         System.out.printf ( "Impressão da StringBuilder" );
         jht.poscolor ( 24, 6, 0, 15 );
         System.out.print ( str );
         //A coluna esquerda da moldura está sendo
         //refeita através deste método apaga
         jht.Apaga ( 4, 26, 0, 2, 14 );
         //////////////////////////////////////////////////////
         Inform ( );
     }

}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.