1. Razões para a introdução da
classe StringBuilder String String é um tipo qualificado final, String str = "abc" + "bcs"; Este código parece simples, mas quando o código é executado, três objetos de string são realmente criados, a saber: "Abs", "bcs" e "abcbcs", se o número de emendas continuar a aumentar, o sistema do programa terá um grande consumo de desempenho, portanto evite usar este método para modificar o conteúdo da string. De modo geral, a operação de String é relativamente simples, mas devido à natureza inalterável de String, para facilitar a modificação de string, StringBuild e StringBuffer são fornecidos.
2. A diferença entre StringBuilder e StringBuffer:
A maior diferença entre String e StringBuffer é que o conteúdo de String não pode ser modificado, enquanto o conteúdo de StringBuffer pode ser modificado. Considere o uso de StingBuffer se você modifica strings com frequência .
Vamos dar uma olhada no uso de StringBuilder:
public class Test{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello").append("World");
fun(sb);
System.out.println(sb);
}
public static void fun(StringBuffer temp) {
temp.append("\n").append("www.bit.com.cn");
}
}
Cada método de StringBuffer tem uma palavra-chave Synchronized , portanto, é thread-safe e StringBuilder não thread-safe.
Multi-threading pode ser entendido como: cada trilha é uma thread, e vários jogadores competindo na trilha pertencem a uma cena multi-threaded. A palavra-chave Synchronized adicionada por StringBuffer é equivalente a definir um limite para a pista, e não haverá caos causado por jogadores concorrentes correndo para as pistas de outros jogadores.
Três , resumo: a diferença entre String, StringBuilder e StringBuffer: O
conteúdo 1.String não pode ser alterado, o conteúdo StringBuilder e StringBuffer não pode ser modificado; a
maioria das funcionalidades 2.StringBuilder e StringBuffer são semelhantes;
3.Mecanismo de sincronização de StringBuffer , que pertence a uma operação segura de thread, e StringBuilder não usa um mecanismo de sincronização, que não é seguro para thread.