Gráfico de comparação
Base para Comparação | Corda | StringBuffer |
---|---|---|
Basic | O comprimento do objeto String é fixo. | O comprimento do StringBuffer pode ser aumentado. |
Modificação | Objeto String é imutável. | O objeto StringBuffer é mutável. |
atuação | É mais lento durante a concatenação. | É mais rápido durante a concatenação. |
Memória | Consome mais memória. | Consome menos memória. |
Armazenamento | String constante pool. | Memória heap. |
Definição de String
"String" é uma classe em Java. O objeto da classe String é de comprimento fixo e, o mais importante a ser lembrado, o objeto da classe String é “imutável”. Depois de inicializar o objeto String, você não poderá modificar esse objeto novamente. O objeto da classe String é armazenado no conjunto constante de cadeias.
Vamos primeiro entender isso, sempre que você criar qualquer string; você cria um objeto do tipo string. As constantes de string também são objetos de string.
System.out.println ("Olá, esta é a solução da Teckpix");
Na declaração acima, a string “Olá, esta é a Teckpix Solution” é uma constante de String.
Agora vamos entender a mutabilidade do objeto String com a ajuda de um exemplo.
String str = new String ("Teckpix"); str.concat ("Solution"); system.out.println (str); // saída Teckpix
No código acima, tentei concatenar as duas strings “Teckpix” e “Solution”. Como sabemos sempre que uma string é criada, isso significa que o objeto do tipo String é criado. Assim, a string “Teckpix” cria um objeto, cuja referência é atribuída ao objeto string “str”. Em seguida, tentei concatenar outra string “Solução” com a string “Teckpix” usando o método “concat ()” da classe String.
Definição de StringBuffer
A classe "StringBuffer" é a classe de mesmo nível da classe "String". A classe StringBuffer fornece mais funcionalidade para as seqüências de caracteres. O objeto da classe StringBuffer é mutável, ou seja, seu objeto pode ser modificado. O comprimento do objeto StringBuffer é expansível. Você pode inserir os caracteres ou substrings no meio da string literal que é atribuída ao objeto StringBuffer ou no final dele. StringBuffer aloca espaço para 16 caracteres adicionais quando nenhum comprimento específico é solicitado.
Vamos entender a mutabilidade do objeto StringBuffer com a ajuda de um exemplo:
StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ("Solução"); system.out.println (Sb); // Output Teckpix Solution
Como sabemos, o objeto StringBuffer é mutável. O método append () modifica o objeto StringBuffer Sb ao qual, inicialmente, a referência do objeto “Teckpix” é atribuída anteriormente. O método append () acrescenta a nova string literal “Solution”, ao final da string literal “Teckpix”. Agora, quando eu imprimir o objeto Sb, ele imprimirá o objeto de string modificado “Teckpix Solutions”.
Diferença chave entre String e StringBuffer
- O comprimento do objeto String é fixo, mas o comprimento de um objeto de StringBuffer pode ser aumentado quando necessário.
- O objeto String é imutável, isto é, seu objeto não pode ser reatribuído novamente, enquanto o objeto StringBuffer é mutável.
- O objeto String é mais lento no desempenho, enquanto o objeto StringBuffer é mais rápido.
- O objeto String consome mais memória, enquanto os objetos StringBuffer consomem menos memória.
- Os objetos String são armazenados em um pool constante, enquanto os objetos StringBuffer são armazenados na memória heap.
Conclusão:
Objetos StringBuffer fornecem mais funcionalidade para as seqüências de caracteres em comparação com a classe String. Portanto, é preferível trabalhar com StringBuffer em vez da classe String.