Java: String x String Builder x StringBuffer
String:
※ é uma classe do Java que representa uma sequência de caracteres (como palavras, frases, nomes). Ela oferece diversos métodos para trabalhar com texto: como comparar, dividir, juntar, verificar tamanho etc.
String Literal:
※ Aqui usamos aspas diretamente. Esse tipo de declaração é simples e comum.
Criação com a Classe String:
※ Esta forma também funciona, mas é menos usada no dia a dia. Ela cria explicitamente um novo objeto.
Característica importante:
※ Strings são imutáveis, ou seja, não podem ser modificadas depois de criadas. Quando alteramos uma String, na verdade estamos criando uma nova.
Exemplo:
Parece que alteramos a String texto, certo? Mas na verdade, o que aconteceu foi:
- A "Olá" continua existindo na memória como estava.
- O Java criou uma nova String com o conteúdo "Olá, mundo!"
- A variável texto foi atualizada para apontar para essa nova String.
Por que a imutabilidade importa?
- Evita bugs em ambientes multithread (vários processos rodando ao mesmo tempo).
- Permite que Strings sejam compartilhadas sem riscos de serem modificadas por acidente.
Alguns métodos uteis da Classe String:
StringBuffer x StringBuilder:
※ são mutáveis: podem ser modificados sem criar um novo objeto.
StringBuffer:
- permite criar e modificar uma sequência flexível de caracteres.
- É thread-safe, ou seja, seguro para uso com múltiplas threads acessando/modificando ao mesmo tempo.
- Por ser sincronizado, tende a ser mais lento que StringBuilder.
StringBuilder:
- Muito parecido com StringBuffer, mas não é sincronizado.
- Isso significa que NÃO é thread-safe, porém é mais rápido.
- Ideal para situações em que a segurança de threads não é necessária, como entrevistas ou competições.