A string fornecida por esta classe StringBuffer é modificada. Você pode usar StringBuffer quando souber que os dados do personagem serão alterados. Normalmente, você usa StringBuffers para construir dados de caracteres dinamicamente.
Existem três classes em Java que são responsáveis pelas operações de caracteres.
1.Character opera em um único personagem.
2.String opera em uma sequência de caracteres. Classes imutáveis.
3.StringBuffer também opera em uma sequência de caracteres, mas é uma classe variável.
Corda:
É um objeto e não um tipo primitivo.
É um objeto imutável, uma vez criado seu valor não pode ser modificado.
Qualquer modificação em um objeto String existente envolve a recriação de um novo objeto e o salvamento do novo valor nele.
String é uma classe final, ou seja, não pode ser herdada.
StringBuffer:
É um objeto mutável. Quando modificado, o objeto não será restabelecido como String. Ele só pode ser estabelecido através do construtor.
StringBuffer sb = new StringBuffer();
nota: não pode ser pago através de símbolos de pagamento.
sb = "bem vindo aqui!";//erro
Após a criação do objeto, o espaço de memória será alocado na memória e um nulo será salvo inicialmente em StringBuffer.
Ao pagar o valor, você pode usar seu método de acréscimo.
sb.append("olá");
O texto acima é um trecho, comum na Internet, a seguir estão minhas próprias percepções adicionais:
O endereço não pode ser alterado, mas o comprimento e o conteúdo podem ser alterados. O método append() serve para anexar. Quando a memória reservada é excedida, a memória é duplicada.
Comparação de eficiência: StringBuffer é maior que String. Como StringBuffer reservou espaço e continua anexando, ele opera apenas em um objeto. A string não pode ser modificada e os objetos só podem ser criados repetidamente para obter modificação. ――Se você anexa, substitui, modifica, insere ou exclui strings com frequência, é melhor usar StringBuffer. Se você precisar usar String, poderá usar StringBuffer para chamar toString() para convertê-lo em String.
Minha máquina é um lixo e o resultado após executá-la é:
Tempo de execução da string: 164593
------------------
Tempo de execução do StringBuffer: 31
Além disso, String possui um método contains, mas StringBuffer não. Contém significa incluir. Aqui você pode relembrar o método contém.
O resultado da execução é
verdadeiro