Em Java, String, StringBuffer e StringBuilder são frequentemente usados classes de string na programação. A diferença entre eles também é uma pergunta que geralmente é feita em entrevistas. Agora resuma e veja como eles são diferentes e iguais.
1. Variável e imutável
A classe String usa uma matriz de caracteres para salvar strings, como segue: como existe um modificador "final", você pode saber que os objetos da string são imutáveis.
Valor de char final privado [];
Tanto o StringBuilder quanto o StringBuffer são herdados da classe AbstractStringBuilder. No AbstractStringBuilder, as matrizes de personagens são usadas para salvar strings. Como segue, pode -se observar que ambos os objetos são mutáveis.
Char [] valor;
2. É multi-thread e seguro
Os objetos na string são imutáveis, para que possam ser entendidos como constantes, que são obviamente seguros de threads.
AbstractStringBuilder é uma classe pública de pais do StringBuilder e StringBuffer, que define algumas operações básicas de strings, como expansão de capacidade, anexar, inserir, indexOF e outros métodos públicos.
O StringBuffer adicionou um bloqueio de sincronização ao método ou um bloqueio de sincronização ao método chamado, para que seja seguro. Veja o seguinte código -fonte:
public sincronizado stringbuffer reverse () {super.Reverse (); Retorne este;} public int indexOf (String str) {return indexOf (str, 0); // Existe um método público sincronizado INT (String str, int a partir de Index)}O StringBuilder não adiciona bloqueios de sincronização ao método, por isso não é segura.
3. Stringbuilder e StringBuffer em comum
StringBuilder e StringBuffer têm classes de pais públicas AbstractStringBuilder ( classe abstrata ).
Uma das diferenças entre classes abstratas e interfaces é que alguns métodos públicos de subclasses podem ser definidos em classes abstratas. As subclasses precisam apenas adicionar novas funções e não precisam repetir os métodos existentes; enquanto as interfaces definem apenas métodos e constantes.
Os métodos do StringBuilder e StringBuffer chamarão de métodos públicos no AbstractStringBuilder, como Super.append (...). É apenas que o StringBuffer adicionará uma palavra -chave sincronizada ao método e a sincroniza.
Finalmente, se o programa não for multi-thread, o uso do StringBuilder será mais eficiente que o StringBuffer.
A análise aprofundada do artigo acima das diferenças entre String, StringBuffer e StringBuilder em Java é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.