String string constante
Variável StringBuffer String (Thread Safe)
Variável StringBuilder String (cofre não-thread)
Para simplificar, a principal diferença de desempenho entre o tipo de string e o tipo StringBuffer é na verdade que a string é um objeto imutável. Portanto, toda vez que você altera o tipo de string, é realmente equivalente a gerar um novo objeto de string e apontar o ponteiro para um novo objeto String. Portanto, é melhor não usar string para seqüências de caracteres que geralmente alteram o conteúdo, porque toda vez que o objeto é gerado, isso terá um impacto no desempenho do sistema. Especialmente quando há muitos objetos referenciados na memória, o GC da JVM começará a funcionar, o que definitivamente será bastante lento.
Se você usar a classe StringBuffer, o resultado será diferente. Cada vez que o resultado operará no próprio objeto StringBuffer, em vez de gerar um novo objeto e alterar a referência do objeto. Portanto, em geral, recomendamos o uso do StringBuffer, especialmente quando os objetos da string são frequentemente alterados. Em alguns casos especiais, o splicing de string de objetos de string é realmente interpretado pela JVM como um splicing de objetos StringBuffer. Portanto, a velocidade dos objetos da string não é mais lenta que os objetos StringBuffer nesses momentos. Especialmente na seguinte geração de objetos de string, a eficiência da string é muito mais rápida que o StringBuffer:
String s1 = "Este é apenas um" + "simples" + "teste";
StringBuffer sb = new StringBuilder ("Isso é apenas A"). Append ("Simple"). Append ("Test");
Você ficará surpreso ao descobrir que a velocidade de gerar objetos String S1 é simplesmente muito rápida e, neste momento, o StringBuffer não tem nenhuma vantagem na velocidade. De fato, este é um truque da JVM. Aos olhos da JVM, este
String s1 = "Este é apenas um" + "simples" + "teste"; Na verdade, é:
String s1 = "Este é apenas um teste simples"; Então é claro que não leva muito tempo. Mas o que você deve observar aqui é que se sua string vier de outra
Para objetos de string, a velocidade não é tão rápida, por exemplo:
String s2 = "Isso é apenas A";
String s3 = "simples";
String s4 = "teste";
String s1 = s2 + s3 + s4;
Neste momento, a JVM fará isso de maneira regular da maneira original
Na maioria dos casos, stringbuffer> string
StringBuffer
Java.lang.StringBuffer Sequência de caracteres mutável segura para roscas. Um buffer de string semelhante a uma string, mas não pode ser modificado. Embora contenha uma certa sequência de caracteres a qualquer momento, o comprimento e o conteúdo da sequência podem ser alterados por algumas chamadas de método.
Os buffers de string podem ser usados com segurança para vários threads. Esses métodos podem ser sincronizados quando necessário; portanto, todas as operações em qualquer instância em particular parecem ocorrer em uma ordem serial que seja consistente com a ordem das chamadas de método feitas por cada encadeamento envolvido.
As principais operações no StringBuffer são os métodos Apêndos e Inserir, que podem ser sobrecarregados para aceitar qualquer tipo de dados. Cada método pode efetivamente converter os dados fornecidos em uma string e, em seguida, anexar ou inserir os caracteres dessa string no buffer da string. O método Apênd sempre adiciona esses caracteres ao final do buffer; O método Insert adiciona caracteres no ponto especificado.
Por exemplo, se z refere -se a um objeto de buffer de string cujo conteúdo atual é "Iniciar", esse método chama Z.append ("LE") faz com que o buffer de string contenha "Startle" e Z.Insert (4, "LE") altera o buffer de string para conter "Starlet".
Na maioria dos casos
java.lang.stringbuilde
java.lang.stringbuilder Uma sequência de caracteres variável é nova em 5.0. Esta classe fornece uma API compatível com StringBuffer, mas não é garantida que seja sincronizada. Esta classe foi projetada para ser um substituto simples para StringBuffer, quando os buffers de string são usados por um único encadeamento (isso é comum). Se possível, é recomendável fazer esta aula primeiro, pois é mais rápido que o StringBuffer na maioria das implementações. Os métodos de ambos são basicamente os mesmos.
O acima é uma compilação das informações sobre String Java, StringBuffer e StringBuilder. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio a este site!