Key Difference – String vs StringBuffer vs StringBuilder em Java
String, StringBuffer e String Builder são classes em Java. String é amplamente utilizado na programação Java. Uma vez que um objeto de String é criado, não é possível alterá-lo. Cada vez que ocorre uma alteração na String, ela cria uma nova String. Mesmo que seja uma concatenação com 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. A principal diferença 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 que é usada para modificar Strings que fornece segurança de thread e StringBuilder é um classe que é usada para modificar Strings que não fornecem segurança de thread.
O que é String em Java?
A classe String está no pacote java.lang. Cada vez que o programador cria uma String, ela é um objeto do tipo String. Strings são imutáveis, o que significa que uma vez que o objeto é criado, ele não pode ser alterado. Objetos criados usando classes wrapper como Integer, Byte, Float, Double também são imutáveis. Um literal de string é colocado entre aspas duplas. por exemplo. "Olá Mundo". Cada vez que um literal de string é criado, a Java Virtual Machine (JVM) verifica o conjunto de constantes de string. Se o String existir, uma referência ao pool de constantes String será retornada. Se for uma nova String, esse objeto é criado no pool de constantes 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 de constantes 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 está se referindo a essa nova String. O objeto “Hello” de saída ainda existe no pool de constantes String.
Se houver um código que seja, String s1=”Olá”;
String s2=s1;
s1, s2 ambos estarão se referindo ao objeto String “Hello”.
O que é StringBuffer em Java?
A classe StringBuffer é usada para tornar objetos String mutáveis. Portanto, esses objetos podem ser modificados. StringBuffer define quatro construtores. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Consulte o código abaixo, StringBuffer s1=new 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 instrução 2, “World” é anexado ao mesmo objeto String “Hello”.
Os objetos 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. A segurança do thread diminui o 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 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(int size), StringBuilder(String str).
Consulte o código abaixo.
StringBuilder s1=new 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 StringBuilder. Na instrução 2, “World” é anexado ao mesmo objeto String “Hello”. Não há criação de objeto String completamente novo.
Os objetos 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?
Todos podem ser usados para criar Strings
Qual é a diferença entre String StringBuffer e StringBuilder em Java?
String vs StringBuffer vs StringBuilder |
|
String | A string é uma classe Java que é usada para criar um objeto do tipo String, que é uma sequência de caracteres. |
StringBuffer | StringBuffer é uma classe Java que é usada para criar objetos String, que podem ser modificados com segurança de thread. |
StringBuilder | StringBuilder é uma classe que é usada para criar objetos string, que podem ser modificados sem segurança de thread. |
Mutabilidade | |
String | A string é uma classe imutável. |
StringBuffer | StringBuffer é uma classe mutável. |
StringBuilder | StringBuilder é uma classe mutável. |
Segurança do fio | |
String | Métodos de String são thread-safe. |
StringBuffer | Os métodos de StringBuffer são thread-safe e sincronizados. |
StringBuilder | Os métodos do StringBuilder não são seguros para threads e não são sincronizados. |
Desempenho | |
String | A string é rápida. |
StringBuffer | StringBuffer é lento. |
StringBuilder | StringBuilder é rápido. |
Resumo – String vs StringBuffer vs StringBuilder em Java
String, StringBuffer e StringBuilder parecem ser a mesma coisa, mas têm significados diferentes. Todas essas são classes Java. A diferença entre String, StringBuffer e StringBuilder em Java é que, String é uma classe para criar um objeto do tipo String, que é um conjunto de caracteres, StringBuffer é uma classe que é usada para modificar Strings e fornecer segurança de thread, enquanto StringBuilder é um classe que é usada para modificar Strings que não fornecem segurança de thread.
Baixe o PDF String vs StringBuffer vs StringBuilder em Java
Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Baixe a versão em PDF aqui Diferença entre String StringBuffer e StringBuilder em Java