Diferença entre String StringBuffer e StringBuilder em Java

Diferença de chave - String vs StringBuffer vs StringBuilder em Java
 

String, StringBuffer e String Builder são classes em Java. String é amplamente usada na programação Java. Depois que um objeto de String é criado, não é possível alterá-lo. Cada vez que uma alteração ocorre na String, ela cria uma nova String. Mesmo que seja uma concatenação para uma String existente, ela cria uma nova String. Isso causa desperdício de memória. As classes StringBuffer e StringBuilder em Java são usadas para modificar String. o diferença chave entre String, StringBuffer e StringBuilder em Java é que String é uma classe para criar um objeto do tipo String que é uma sequência de caracteres, StringBuffer é uma classe usada para modificar Strings que fornece segurança de thread e StringBuilder é uma classe usada para modificar Strings que não fornecem segurança de thread.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é String em Java
3. O que é StringBuffer em Java
4. O que é o StringBuilder em Java
5. Semelhanças entre String StringBuffer e StringBuilder em Java
6. Comparação lado a lado - String vs StringBuffer vs StringBuilder em Java em forma de tabela
7. Resumo

O que é String em Java?

A classe String está no pacote java.lang. Cada vez que o programador cria uma String, é um objeto do tipo String. Strings são imutáveis, uma vez que o objeto é criado, ele não pode ser alterado. Objetos criados usando classes de wrapper como Integer, Byte, Float, Double também são imutáveis. Um literal de cadeia é colocado entre aspas duplas. por exemplo. "Olá Mundo". Cada vez que um literal de cadeia de caracteres é criado, a Java Virtual Machine (JVM) verifica o conjunto constante de cadeias. Se a String existir, uma referência ao pool constante de String será retornada. Se for uma nova String, esse objeto será criado no pool constante de String.

Figura 01: Programa Java usando String, StringBuffer e StringBuilder

Consulte o trecho de código abaixo.

String s1 = "Olá";

s1 = s1 + “mundo”;

System.out.println (s1);

Na primeira instrução, s1 está se referindo ao "Hello" no pool constante de String. Na segunda instrução, a JVM não altera a String existente. Em vez disso, ele cria uma nova String como "Hello World" e s1 agora se refere a essa nova String. O objeto "Hello" existente ainda existe no pool constante de String.

Se houver um código que seja,

String s1 = "Olá";

String s2 = s1;

s1, s2 ambos se referirão ao objeto String "Hello".

O que é StringBuffer em Java?

A classe StringBuffer é usada para tornar os objetos String mutáveis. Portanto, esses objetos podem ser modificados. StringBuffer define quatro construtores. StringBuffer (), StringBuffer (tamanho int), StringBuffer (String str), StringBuffer (charSequence [] ch)

Consulte o código abaixo,

StringBuffer s1 = novo StringBuffer ("Olá");

s1.append ("Mundo");

System.out.println (s1);

Na instrução 1, s1 está se referindo ao objeto "Hello" em um heap. O objeto é mutável porque é criado usando StringBuffer. Na declaração 2, "World" é anexado ao mesmo objeto String "Hello".

Objetos de string criados com a classe StringBuffer podem economizar memória. StringBuffer fornece segurança de thread porque dois threads não podem acessar o mesmo método na classe StringBuffer simultaneamente. Diminuição da segurança do thread Desempenho do StringBuffer. A classe StringBuffer contém métodos como append (), insert (), reverse (), replace ().

O que é StringBuilder em Java?

A classe StringBuilder é usada para tornar os objetos String mutáveis. Portanto, esses objetos podem ser modificados. A funcionalidade é semelhante ao StringBuffer, mas isso não fornece segurança de thread. StringBuilder tem construtores como StringBuilder (), StringBuilder (tamanho int), StringBuilder (String str).

Consulte o código abaixo.

StringBuilder s1 = novo StringBuilder (“Olá”);

s1.append ("Mundo");

System.out.println (s1);

Na instrução 1, s1 está se referindo ao objeto "Hello" em um heap. O objeto é mutável porque é criado usando o StringBuilder. Na declaração 2, "World" é anexado ao mesmo objeto String "Hello". Não há criação de um objeto String completamente novo.

Objetos de string criados com a classe StringBuilder podem economizar memória. Ao contrário do StringBuffer, o StringBuilder não fornece segurança de thread, porque dois threads podem acessar o mesmo método na classe StringBuilder simultaneamente. A classe StringBuilder contém métodos como append (), insert (), reverse (), replace ().

Qual é a semelhança entre String, StringBuffer e StringBuilder em Java?

  • Tudo pode ser usado para criar Strings.

Qual é a diferença entre String StringBuffer e StringBuilder em Java?

String vs StringBuffer vs StringBuilder

Corda A string é uma classe Java usada para criar um objeto do tipo String, que é uma sequência de caracteres.
StringBuffer StringBuffer é uma classe Java usada para criar objetos String, que podem ser modificados com segurança de encadeamento.
StringBuilder StringBuilder é uma classe usada para criar objetos de string, que podem ser modificados sem a segurança do thread.
Mutabilidade
Corda A string é uma classe imutável.
StringBuffer StringBuffer é uma classe mutável.
StringBuilder StringBuilder é uma classe mutável.
Segurança da linha
Corda Métodos de String são seguros para threads.
StringBuffer Os métodos do StringBuffer são seguros para threads e sincronizados.
StringBuilder Métodos de StringBuilder não são encadeados e não são sincronizados.
atuação
Corda A corda é rápida.
StringBuffer StringBuffer está lento.
StringBuilder StringBuilder é rápido.

Resumo - String vs StringBuffer vs StringBuilder em Java 

String, StringBuffer e StringBuilder parecem ser os mesmos, mas eles têm significados diferentes. Todos esses são classes Java. A diferença entre String, StringBuffer e StringBuilder em Java é que, String é classe para criar um objeto do tipo String, que é um conjunto de caracteres, StringBuffer é uma classe usada para modificar Strings e fornecer segurança de thread, enquanto StringBuilder é um classe usada para modificar seqüências de caracteres que não fornecem segurança de encadeamento.

Faça o download do PDF String vs StringBuffer vs StringBuilder em Java

Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre String StringBuffer e StringBuilder em Java

Referência:

1. "String vs StringBuffer vs StringBuilder". JournalDev, 30 de julho de 2017. Disponível aqui
2. "Java com fome". Diferença entre as classes String, StringBuilder e StringBuffer com o exemplo: Java | Java com fome. Disponivel aqui 
3.tutorialspoint.com. "Java Strings". O ponto. Disponivel aqui