A classe String é uma das mais fundamentais da linguagem Java, utilizada para representar sequências de caracteres (textos). Ela pertence ao pacote java.lang e é imutável, o que significa que seu conteúdo não pode ser alterado após a criação do objeto.
✅ Imutabilidade: Toda operação sobre uma String cria um novo objeto. Isso melhora a segurança e a previsibilidade.
✅ Classe Final: A classe String é final, o que significa que não pode ser estendida.
✅ Interning: Strings literais são armazenadas no String Pool, otimizando o uso de memória.
✅ Compatível com métodos de comparação, busca, substituição, divisão e conversão.
String texto1 = "Java";
String texto2 = new String("Java");
Para melhor desempenho e simplicidade, prefira sempre literals.
length() - Retorna o número de caracteres charAt(int index) - Retorna o caractere no índice especificado.
substring(int beginIndex) - Retorna uma nova String a partir de um índice.
equals(Object obj) - Compara o conteúdo da String com outro objeto.
equalsIgnoreCase(String) - Compara ignorando maiúsculas e minúsculas.
contains(CharSequence) - Verifica se uma sequência está contida na String.
replace(CharSequence, ...) - Substitui partes da String.
split(String regex) - Divide a String com base em uma expressão regular.
toUpperCase() - Converte para letras maiúsculas.
toLowerCase() - Converte para letras minúsculas.
trim() - Remove espaços no início e fim.
== compara referência (endereços de memória).
equals() compara conteúdo textual.
compareTo() compara lexicograficamente e retorna:
0 se forem iguais,
valor negativo se a String for menor,
valor positivo se for maior.
String a = "Java";
String b = "Java";
System.out.println(a == b); // true (referência igual por ser literal)
System.out.println(a.equals(b)); // true (conteúdo igual)
A classe String é compatível com expressões regulares, facilitando tarefas como validações e extrações:
String email = "[email protected]";
boolean valido = email.matches("^[\\w.-]+@[\\w.-]+\\.\\w+$");
Por ser imutável, String é segura para uso em ambientes concorrentes.
Para operações intensivas com texto, utilize StringBuilder ou StringBuffer.
Evite usar new String(...) desnecessariamente.
Prefira o uso de StringBuilder em loops.
Sempre use equals() ao comparar strings, nunca ==.
