Diferença entre String e StringBuffer classe em Java
Contente
String e StringBuffer são as classes que operam em strings. A classe StringBuffer é a classe de mesmo nível da classe String. O objeto da classe String é de comprimento fixo. O objeto da classe StringBuffer é expansível. A diferença básica entre String e StringBuffer é que o objeto da classe "String" é imutável. O objeto da classe "StringBuffer" mutável.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
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 | 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 pool constante. | Memória de pilha. |
Definição de String
"String" é uma classe em Java. O objeto da classe String é de tamanho fixo e, o mais importante, é lembrar que o objeto da classe String é "imutável". Depois de inicializar o objeto String, você não pode modificar esse objeto novamente. O objeto da classe String é armazenado no pool constante de String.
Vamos primeiro entender que, sempre que você cria uma string; você cria um objeto do tipo string. As constantes de string também são objetos de string.
System.out.ln ("Olá, aqui é a solução Teckpix");
Na declaração acima, a string "Olá, aqui é a solução Teckpix" é 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 ("Solução"); system.out.ln (str); // saída Teckpix
No código acima, tentei concatenar as duas strings "Teckpix" e "Solution". Como sabemos, sempre que uma string é criada, significa que o objeto do tipo String é criado. Portanto, a string "Teckpix" cria um objeto cuja referência é atribuída ao objeto de string "str". Em seguida, tentei concatenar uma outra string "Solution" com a string "Teckpix" usando o método "concat ()" da classe String.
Como os objetos String são imutáveis, nenhuma modificação é feita na string "Teckpix" e a nova string "Solution" cria outro objeto no pool constante de strings. Porém, a referência ao objeto "Solution" não é capturada por nenhum objeto, portanto, a referência ao objeto Solution é perdida, embora ainda esteja presente no pool constante de strings. Como nenhuma modificação é feita no objeto Teckpix, quando o objeto str ao qual eu atribuí a referência do Teckpix anteriormente, utilizarei apenas a string “Teckpix”.
Definição de StringBuffer
A classe "StringBuffer" é a classe de mesmo nível da classe "String". A classe StringBuffer fornece mais funcionalidade às seqüências de caracteres. O objeto da classe StringBuffer é mutável, ou seja, seu objeto pode ser modificado. O comprimento do objeto StringBuffer é crescente. Você pode inserir os caracteres ou substrings no meio da cadeia literal que é atribuída ao objeto StringBuffer ou no final dela. StringBuffer aloca espaço para 16 caracteres adicionais quando nenhum tamanho específico é solicitado.
Vamos entender a mutabilidade do objeto StringBuffer com a ajuda de um exemplo:
StringBuffer Sb = novo StringBuffer ("Teckpix"); Sb.append ("Solução"); system.out.ln (Sb); // Solução de saída Teckpix
Como sabemos que 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 () anexa a nova string literal "Solution", ao final da string literal "Teckpix". Agora, quando eu o objeto Sb, ele será o objeto de string modificado "Teckpix Solutions".
- 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, ou seja, 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 que 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:
Os objetos StringBuffer fornecem mais funcionalidade às seqüências, em comparação com a classe String. Portanto, é preferível trabalhar com StringBuffer em vez da classe String.