StringBuffer vs StringBuilder
Java é uma linguagem orientada a objetos muito popular. Em Java, a classe String é fornecida para conter uma sequência de caracteres que não pode ser modificada (uma vez inicializada). Alternativamente, a linguagem de programação Java fornece dois tipos de sequências de caracteres mutáveis. Ou seja, quando os programadores precisam modificar uma determinada String (após a inicialização), eles precisam usar a classe StringBuffer ou a classe StringBuilder, ao invés da classe String. StringBuffer foi introduzido no JDK 1.0 e a classe StringBuilder foi introduzida no JDK 1.5, na verdade como um substituto para a classe StringBuffer (para ambientes single-thread).
O que é StringBuffer?
A classe StringBuffer foi introduzida no JDK 1.0. A classe StringBuffer pertence ao pacote java.lang e é herdada do java.lang.object genérico. Os programadores não podem estendê-lo ainda mais, pois é uma classe final. A classe StringBuffer implementa as interfaces Serializable, Appendable e CharSequience. Um objeto da classe StringBuffer pode conter uma sequência de caracteres que é mutável e thread-safe. Isso significa que é muito semelhante a um objeto String, mas a sequência de caracteres (comprimento e conteúdo) pode ser alterada a qualquer momento após a inicialização do objeto StringBuffer. No entanto, isso deve ser feito usando os métodos específicos fornecidos pela classe StringBuffer. Existem duas operações principais na classe StringBuffer. Eles são fornecidos pelos métodos append() e insert(). Esses métodos são sobrecarregados, portanto, podem aceitar dados de qualquer tipo, como inteiro e longo. Ambos os métodos primeiro transformam qualquer entrada em uma string e, em seguida, adiciona (acrescenta ou insere) os caracteres da string correspondente ao objeto Stribbuffer existente. O método append() adiciona a string convertida ao final do objeto StringBuffer existente, enquanto o método insert() adicionará os caracteres de entrada ao ponto de inserção especificado.
O que é StringBuilder?
A classe StringBuilder foi introduzida no JDK 1.5. A API StringBuilder é muito semelhante à API StringBuffer. Na verdade, a classe StringBuilder foi introduzida como um substituto para a classe StringBuffer (para aplicativos single-thread). A classe StringBuilder pertence ao pacote java.lang e é herdada do java.lang.object genérico. É uma classe final e, portanto, os programadores não podem estendê-la. A classe StringBuilder implementa interfaces Serializable, Appendable e CharSequience. Um objeto da classe StringBuilder pode conter uma sequência de caracteres que é mutável, mas não thread-safe. Isso significa que é muito semelhante a um objeto String, mas a string pode ser alterada a qualquer momento. Mas a classe StringBuilder não fornece sincronização e, portanto, é considerada mais rápida do que usar a classe StringBuffer. A classe StringBuilder fornece os métodos append() e insert() com funcionalidade exatamente semelhante à classe StringBuffer.
Qual é a diferença entre StringBuffer e StringBuilder?
Embora as classes StringBuilder e StringBuffer possam ser usadas para sequências mutáveis de caracteres em Java, elas têm uma diferença fundamental. Ao contrário da classe StringBuffer, a classe StringBuilder não é thread-safe e não fornece sincronização. Portanto, é recomendado que a classe StringBuilder seja usada no lugar da classe StringBuffer em aplicações single-thread, porque afirma-se que a classe StringBuilder será muito mais rápida que a classe StringBuffer (sob circunstâncias normais).