Java: Diferenças entre as classes String, StringBuffer e StringBuilder

Hoje iremos abordar um assunto muito interessante quando falamos de Java, que são as classes String, StringBuffer e StringBuilder. A classe String com certeza é uma das principais classes da linguagem Java, esta classe é responsável pelo armazenamento de dados do tipo texto

Por | @oficinadanet Programação

Hoje iremos abordar um assunto muito interessante quando falamos de Java, que são as classes String, StringBuffer e StringBuilder.

String


A classe String com certeza é uma das principais classes da linguagem Java, esta classe é responsável pelo armazenamento de dados do tipo texto, as principais características da classe String são:

  • Seu nome completo é java.lang.String;
  • É um objeto imutável, ou seja, depois que criado seu conteúdo jamais é alterado;
  • É uma classe final, ou seja, não pode ser herdada por nenhuma outra classe.

Um objeto imutável quando criado na memória nunca terá seu valor alterado, no exemplo iremos demonstrar esta situação:

Java: Diferenças entre as classes String, StringBuffer e StringBuilder

  1. É criado uma string com o conteudo "oficina da";
  2. É criado uma string com o conteudo "net";
  3. É criado uma nova string com o conteudo "oficina da net";
  4.  As strings "oficina da " e "net" estão sem referência,
            * ou seja, estão disponiveis para o gargage collector.
    As strings "oficina da " e "net" estão sem referência, ou seja, estão disponíveis para o gargage collector.

StringBuffer


A classe StringBuffer é geralmente utilizada quando precisamos armazenar um grande número de caracteres, as principais características da classe StringBuffer são:

  • Seu nome completo é java.lang.StringBuffer;
  • É um objeto mutável, ou seja, o seu valor pode ser alterado, isso significa que o valor armazenado em sua instância pode ser alterado;
  • É uma classe final, não pode ser herdada por nenhuma outra classe;
  • Todos os seus métodos são synchronized, assim é uma classe preparada para um ambiente onde se utiliza os recursos de muilti-thread.

Exemplo da utilização da classe StringBuffer:

Java: Diferenças entre as classes String, StringBuffer e StringBuilder

  1. É armazenado uma String com o valor "oficina", através da chamada do método append;
  2. É concatenado o valor de "da ", agora temos na StringBuffer o valor de"oficina da ";
  3. É concatenado a variável nome o valor de "net",  agora temos na StringBuffer o valor de "oficina da net".

StringBuilder


A classe StringBuilder é similar a classe StringBuffer, a única diferença é que os seus métodos não são synchronized.
Esta classe é indicada quando não é necessário ter o controle sobre as thread que irão modificar o conteúdo da instância, por isso esta classe é mais utilizada do que a classe StringBuffer.
Exemplo da utilização da classe StringBuilder:

Java: Diferenças entre as classes String, StringBuffer e StringBuilder

  1. É armazenado na instância de nome o valor de "oficina", através da chamada do método append;
  2. É concatenado a variável nome o valor de "da ", agora temos na StringBuilder o valor de "oficina da ";
  3. É concatenado a variável nome o valor de "net", agora temos na StringBuilder o valor de "oficina da net".

Com isso podemos concluir que a concatenação de um StringBuilder comparado com a String é muito mais rápida, isto porque um objeto String é imutável, e o StringBuilder é um objeto mutável.

Vale lembrar que a unica diferença entre StringBuffer e a StringBuilder,  é que todos os métodos da StringBuffer são synchronized, enquando os da StringBuilder não são.

Até a próxima.

Mais sobre:
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo

Siga nossas contas no Twitter