Diferença entre String e StringBuffer classe em Java

Autor: Laura McKinney
Data De Criação: 3 Abril 2021
Data De Atualização: 15 Poderia 2024
Anonim
Diferença entre String e StringBuffer classe em Java - Tecnologia
Diferença entre String e StringBuffer classe em Java - Tecnologia

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.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoCordaStringBuffer
BasicO comprimento do objeto String é fixo.O comprimento do StringBuffer pode ser aumentado.
ModificaçãoO 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óriaConsome mais memória.Consome menos memória.
ArmazenamentoString 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".

  1. O comprimento do objeto String é fixo, mas o comprimento de um objeto de StringBuffer pode ser aumentado quando necessário.
  2. O objeto String é imutável, ou seja, não pode ser reatribuído novamente, enquanto o objeto StringBuffer é mutável.
  3. O objeto String é mais lento no desempenho, enquanto o objeto StringBuffer é mais rápido.
  4. O objeto String consome mais memória, enquanto que os objetos StringBuffer consomem menos memória.
  5. 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.