Como o java distingue claramente os cenários de aplicação de String, StringBuilder e StringBuffer

Insira a descrição da imagem aqui

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.

Acho que você gosta

Origin blog.csdn.net/m0_46551861/article/details/109578163
Recomendado
Clasificación