Junior
Fale-me sobre a classe String na linguagem de programação Java.
sobes.tech IA
Resposta da IA
A classe String em Java representa uma sequência imutável de caracteres.
Características principais e particularidades:
- Imutabilidade: Após criar um objeto
String, o seu conteúdo não pode ser alterado. Qualquer operação que pareça modificar a string (por exemplo, concatenação) na verdade cria um novo objetoString. Isto melhora a segurança e a segurança em ambientes multithread. - Sobrecarga do operador
+: Para strings, o operador+foi sobrecarregado para realizar concatenação. - Duas formas de criação:
- Com um literal de string:
String s1 = "Hello";- criado no pool de strings (String Pool). - Com o operador
new:String s2 = new String("World");- criado no heap, pode criar um novo objeto mesmo que já exista um literal igual no pool.
- Com um literal de string:
- Pool de strings (String Pool): Área no heap onde os literais de strings são armazenados para otimizar a memória. Ao criar um literal de string, a JVM verifica primeiro o pool. Se a string já existir, uma referência a esse objeto é retornada. Caso contrário, um novo objeto é criado e adicionado ao pool.
- Métodos úteis principais:
length(): Retorna o comprimento da string.charAt(int index): Retorna o caractere na posição especificada.substring(int beginIndex, int endIndex): Retorna uma subcadeia.contains(CharSequence s): Verifica se a string contém a sequência de caracteres especificada.indexOf(int ch)/indexOf(String str): Retorna a primeira posição da ocorrência do caractere ou subcadeia.equals(Object anObject): Compara o conteúdo das strings. É importante usarequals()para comparar conteúdo, não==, que compara referências.equalsIgnoreCase(String anotherString): Compara strings sem distinguir maiúsculas/minúsculas.replace(char oldChar, char newChar)/replace(CharSequence target, CharSequence replacement): Substitui caracteres ou subcadeias.trim(): Remove espaços em branco no início e no fim.split(String regex): Divide a string em subcadeias com base no delimitador.
Exemplo de criação e algumas operações:
// Criação com literal
String str1 = "Java";
// Criação com new
String str2 = new String("Java");
// Concatenação
String str3 = str1 + " is amazing";
// Comparação de conteúdo (usando equals, não ==)
boolean areEqualContent = str1.equals(str2); // true
// Comparação de referências (usando ==)
boolean areEqualReference = (str1 == str2); // false
// Comprimento da string
int length = str3.length();
// Obter caractere
char firstChar = str1.charAt(0); // 'J'
// Verificação de inclusão
boolean containsIs = str3.contains("is"); // true
A imutabilidade de String pode levar a ineficiências em modificações repetidas de strings, pois um novo objeto é criado a cada vez. Para esses cenários, é preferível usar StringBuilder ou StringBuffer.