String, StringBuffer e StringBuilder em Java são classes de string frequentemente usadas na programação. Para resumir, observe suas diferenças e o mesmo.
1. Variável e inalterado
A classe String usa a matriz de caracteres para salvar a string.
Valor de char final privado [];
Tanto o StringBuilder quanto o StringBuffer são herdados da classe AbstractStringBuilder.
Char [] valor;
2. É seguro?
Objetos na string são imutáveis, que podem ser entendidos como constantes, obviamente o encadeamento é seguro.
AbstractStringBuilder é uma classe de mãe pública entre StringBuilder e StringBuffer, definindo operantes básicos de alguma string, como ExpandCapacity, Append, Insert, Indexof e outros métodos públicos.
O StringBuffer adiciona um bloqueio síncrono ou o método de chamada é adicionado ao método, por isso é um thread -safe. Veja o seguinte código -fonte:
Copie o código do código da seguinte forma:
Public sincronizado stringbuffer reverse () {{) {
Super.Reverse ();
Devolver isso;
}
public int indexOf (String str) {
Retorno IndexOf (STR, 0);
}
O StringBuilder não possui um bloqueio síncrono no método, por isso é uma segurança não thread.
3. Stringbuilder e StringBuffer em comum
StringBuilder e StringBuffer têm pai público -Class AbstractStringBuilder (classe abstrata).
Uma das diferenças entre classes abstratas e interfaces é: alguns métodos públicos de algumas subclasses podem ser definidos em classes abstratas. do método na interface.
Os métodos de StringBuilder e StringBuffer chamam métodos públicos no AbstractStringBuilder, como Super.Appending (...). É apenas que o StringBuffer adicionará a palavra -chave sincronizada ao método para sincronizar.
Finalmente, se o programa não for multi -thread, a eficiência do uso do StringBuilder será maior que o StringBuffer.