Vamos analisar a concatenação da string abaixo.
1. String
Abra o código -fonte da string, como mostrado na figura
Você descobrirá que o valor do personagem que armazena a string é uma constante final. Olhando para o método de construção da string, descobrimos que o valor da string é determinado pelo método de construção. É necessário explicar a palavra -chave final aqui
O atributo modificado pelo final é uma constante (o valor não pode ser alterado). É atribuído um valor ao declarar ou atribuir um valor no método de construção. Uma vez atribuído, ele não pode ser alterado.
Portanto, usando a string para implementar a costura da string. Como o valor da string não pode ser alterado, uma nova string deve ser gerada para cada costura para armazenar uma nova string. Portanto, o uso da string para lidar com a costura de string terá um desempenho muito baixo.
Para mais informações sobre String, consulte o blog: http://longpo.iteye.com/blog/2199493
2.StringBuffer
A classe StringBuffer herda a classe abstrata AbstractStringBuilder Class e abre o código -fonte do AbstractStringBuilder.
Vamos dar uma olhada nos três métodos de sobrecarga
Verificou -se que todos os construtores da classe pai AbstractStringBuilder são chamados.
Verificou -se que a matriz de char na qual os dados do StringBuffer armazena não é do tipo final, o que significa que ele pode ser alterado e as cordas construídas ainda têm espaço livre para unir as cordas.
No StringBuffer, usamos a função append () para unir strings. Podemos pensar que, embora ainda haja na matriz de char, definitivamente não é suficiente para secá -lo o tempo todo. Portanto, é necessário observar a implementação do código -fonte da função ANDEND.
Confira o método Apênder de sua classe pai AbstractStringBuilder
Quando a matriz de valor não é capaz de capacidade suficiente, uma nova matriz de valor é criada para armazenar a string. Neste ponto, você deve entender o princípio do splicing string stringbuffer. Quando a matriz de valor de char é insuficiente, uma matriz de capacidade maior será criada para armazenar. A eficiência é significativamente maior que a da string.
3.StringBuilder
StringBuilder e StringBuffer são dois irmãos, e seu uso é basicamente o mesmo. A diferença é que o StringBuffer é sincronizado e seguro de threads, enquanto o StringBuilder não garante sincronização e segura de threads.
O StringBuilder é mais rápido que o StringBuffer na maioria das implementações e, quando os buffers de string são acessados por um único thread, é recomendável usar o StringBuilder primeiro.
O acima é o Java String Choice introduzido pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!