Junior
177
O que sabes sobre a classe String em Java?
Resposta da IA
sobes.tech IA
String em Java é uma classe imutável que representa uma sequência de caracteres.
Principais características:
- Imutabilidade: Após criar um objeto
String, seu conteúdo não pode ser alterado. Qualquer operação que pareça modificar a string, na verdade, retorna um novo objetoString. Isso torna os objetosStringseguros para uso em ambientes multithread. - Pool de strings (String Pool): Java mantém um pool de strings. Quando um literal de string é criado (por exemplo,
"olá"), a JVM verifica primeiro o pool. Se a string já existir, uma referência ao objeto existente é retornada. Caso contrário, um novo objeto é criado no pool. Usando o construtornew String("olá"), um novo objeto é sempre criado fora do pool. - Sobrecarga do operador
+: O operador+é sobrecarregado para concatenação de strings. O compilador pode otimizar a concatenação usandoStringBuilderouStringBufferpara melhorar o desempenho. - Implementação de interfaces:
Stringimplementa as interfacesSerializable,Comparable<String>eCharSequence. - Métodos: A classe
Stringfornece muitos métodos úteis para trabalhar com strings:length(),charAt(),substring(),indexOf(),equals(),equalsIgnoreCase(),startsWith(),endsWith(),trim(),replace(),split()e outros.
Exemplos de criação de strings:
// Criação por literal (usa o pool de strings)
String str1 = "Hello";
// Criação por construtor (cria um novo objeto fora do pool)
String str2 = new String("World");
// Criação a partir de um array de caracteres
char[] chars = {'J', 'a', 'v', 'a'};
String str3 = new String(chars);
Comparação de strings:
equals(): Compara o conteúdo das strings.==: Compara referências de objetos. Para literais de strings com o mesmo conteúdo, geralmente apontam para a mesma referência no pool, mas para objetos criados comnew String(),==seráfalse, mesmo que o conteúdo seja igual.
String s1 = "java";
String s2 = "java";
String s3 = new String("java");
System.out.println(s1 == s2); // true (ambos do pool de strings)
System.out.println(s1 == s3); // false (s3 é um novo objeto)
System.out.println(s1.equals(s3)); // true (compara o conteúdo)
Para modificar strings em Java, usam-se as classes StringBuilder (não sincronizada, para ambientes de thread única) e StringBuffer (sincronizada, para ambientes multithread), que são mutáveis.
// Exemplo com StringBuilder
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
String result = sb.toString(); // Converte de volta para String
System.out.println(result); // Output: Hello World