CodeGym /Cursos /JAVA 25 SELF /Principais métodos de String

Principais métodos de String

JAVA 25 SELF
Nível 9 , Lição 3
Disponível

1. Método length(): quantos caracteres há na string?

O método length() retorna a quantidade de caracteres da string. Isso não é exatamente o mesmo que “quantidade de bytes” (especialmente se a string tiver emojis ou caracteres Unicode), mas para a maioria das tarefas é exatamente o que você precisa.

Exemplo de uso

String name = "Vasilisa";
int length = name.length();
System.out.println("Quantidade de letras no nome: " + length); // 8

Para que serve

  • Verificar se o usuário não inseriu uma string vazia.
  • Verificar o comprimento mínimo/máximo de uma senha.
  • Saber quantos caracteres restam até o limite (por exemplo, em um SMS ou tuíte).

Exemplo: verificação de string vazia

String input = "";
if (input.length() == 0) 
{
    System.out.println("A string está vazia!");
}

Dica: para verificar se uma string está “vazia”, também existe o método isEmpty(), mas falaremos dele mais adiante.

FAQ rápido

  • O método length() não recebe argumentos (os parênteses ficam sempre vazios).
  • Se a string for composta por espaços, eles também contam como caracteres!
  • Se a string for null, chamar length() causará NullPointerException — verifique null antes.

2. Método substring(): extraindo parte da string

O método substring() permite obter uma substring — “recortar” um trecho pelos índices informados.

Existem duas formas principais de chamada:

  • str.substring(startIndex) — da posição startIndex até o fim da string.
  • str.substring(startIndex, endIndex) — da posição startIndex até endIndex (sem incluir o caractere no índice endIndex).

Atenção: a indexação de caracteres na string começa em 0.

Exemplos de uso

Exemplo 1: Obter as três primeiras letras do nome

String name = "Vasilisa";
String firstThree = name.substring(0, 3); // "Vas"
System.out.println(firstThree);

Exemplo 2: Obter a extensão de um arquivo

String fileName = "document.pdf";
int dotIndex = fileName.indexOf(".");
String extension = fileName.substring(dotIndex + 1); // "pdf"
System.out.println(extension);

Exemplo 3: Últimos 4 caracteres da string

String cardNumber = "1234567890123456";
String lastFour = cardNumber.substring(cardNumber.length() - 4); // "3456"
System.out.println("Últimos 4 dígitos: " + lastFour);

Particularidades e observações

  • Índices incorretos (startIndex < 0, endIndex > comprimento, startIndex > endIndex) lançam StringIndexOutOfBoundsException.
  • O método sempre retorna uma nova string — a original não é alterada.
  • A segunda forma (com dois parâmetros) não inclui o caractere no índice endIndex.

String str = "abcdef"; 
// Índices: 0 1 2 3 4 5

str.substring(1, 4)  "bcd" // caracteres nos índices 1, 2, 3
Esquema de funcionamento de substring(start, end)

3. Método indexOf(): procurando um caractere ou substring

O método indexOf() procura a posição (índice) da primeira ocorrência de um caractere ou substring.

  • Se encontrar — retorna o índice (a partir de 0).
  • Se não encontrar — retorna -1.

Exemplos de uso

Exemplo 1: Encontrar o primeiro ponto em um email

String email = "ivan.petrov@mail.com";
int dotIndex = email.indexOf('.');
System.out.println("Primeiro ponto na posição: " + dotIndex); // 4

Exemplo 2: Encontrar uma substring

String text = "Eu amo Java!";
int index = text.indexOf("Java");
System.out.println(index); // 7

Exemplo 3: Encontrar um caractere após uma posição específica

String s = "abracadabra";
int firstA = s.indexOf('a'); // 0
int secondA = s.indexOf('a', firstA + 1); // 3
System.out.println("Segundo 'a' na posição: " + secondA);

Particularidades e observações

  • Se o caractere/substrig ocorrer várias vezes, o índice da primeira ocorrência é retornado.
  • Para a última ocorrência, use lastIndexOf().
  • Para caractere use aspas simples: 'a'; para substring — aspas duplas: "abc".

Exemplo: localizar a extensão do arquivo

String fileName = "report.final.version.docx";
int lastDot = fileName.lastIndexOf('.');
String extension = fileName.substring(lastDot + 1);
System.out.println("Extensão do arquivo: " + extension); // "docx"

4. Método charAt(): obtendo um caractere pelo índice

O método charAt(index) retorna o caractere da string pelo seu índice.

Exemplos de uso

Exemplo 1: Verificar a primeira letra de uma string

String city = "Minsk";
char first = city.charAt(0); // 'M'
System.out.println("Primeira letra: " + first);

Exemplo 2: Verificar se a string começa com letra maiúscula

String word = "Java";
if (Character.isUpperCase(word.charAt(0))) 
{
    System.out.println("A palavra começa com letra maiúscula!");
}

Exemplo 3: Percorrer todos os caracteres da string

String text = "Olá";
for (int i = 0; i < text.length(); i++) 
{
    System.out.println("Caractere #" + i + ": " + text.charAt(i));
}

Particularidades e observações

  • Um índice fora do intervalo (por exemplo, -1 ou >= comprimento) causará StringIndexOutOfBoundsException.
  • O método retorna um valor do tipo char, não uma string.

5. Método toCharArray(): convertendo a string em um array de caracteres

O método toCharArray() é uma forma simples de converter uma string em um array de caracteres (char[]). Útil para processamento caractere a caractere, ordenação, verificações etc.

Exemplo de uso:

String text = "Hello";
char[] characters = text.toCharArray();

for (char c : characters) 
{
    System.out.println(c);
}
// Saída:
// H
// e
// l
// l
// o

Para que serve:

  • Processamento de caracteres: arrays são mais convenientes para lógica caractere a caractere (por exemplo, verificar anagramas).
  • Compatibilidade: algumas APIs esperam char[] como argumento.

6. Método replace(): substituindo substrings

O método replace(CharSequence target, CharSequence replacement) substitui todas as ocorrências da substring target por replacement. Retorna uma nova string; a original não é alterada.

Exemplo de uso:

String sentence = "Eu amo programar em Java.";
String newSentence = sentence.replace("Java", "Java 25");
System.out.println(newSentence);
// Saída: Eu amo programar em Java 25.

String email = "support@company.com";
String cleanEmail = email.replace("@", "[at]");
System.out.println(cleanEmail);
// Saída: support[at]company.com

Particularidades e observações

  • Todas as ocorrências são substituídas.
  • String é imutável: replace() retorna uma nova string.
  • Para regras mais complexas, use replaceAll() com expressão regular.

7. Métodos trim() e strip(): removendo espaços

Ambos os métodos removem caracteres “invisíveis” no início e no fim da string.

  • trim() — método clássico: remove espaços, tabulações, quebras de linha e alguns caracteres de controle, mas não todos os espaços Unicode.
  • strip() — método moderno: considera todos os tipos de espaços conforme o padrão Unicode. Preferível em projetos novos.

Exemplo de uso:

String s1 = "   Olá, mundo!   ";
System.out.println(s1.trim());
// Saída: "Olá, mundo!"

String s2 = " \u2005  Java 11  \u2005 "; // \u2005 — é um espaço Unicode
System.out.println("trim(): " + s2.trim());
System.out.println("strip(): " + s2.strip());
// Saída:
// trim():  Java 11  
// strip(): Java 11

Para que serve:

  • Limpeza da entrada do usuário de espaços desnecessários.
  • Normalização de dados de arquivos/logs antes do processamento.

8. Prática: resolvendo exercícios

Exercício 1: Verificar o comprimento da senha

String password = "qwerty";
if (password.length() < 8) 
{
    System.out.println("A senha é muito curta!");
}
else 
{
    System.out.println("A senha é aceitável.");
}

Exercício 2: Extrair o nome do nome completo

String fullName = "Ivanov Ivan Ivanovich";
int firstSpace = fullName.indexOf(' ');
String name = fullName.substring(firstSpace + 1, fullName.indexOf(' ', firstSpace + 1));
System.out.println("Nome: " + name); // "Ivan"

Exercício 3: Verificar se a string começa com uma determinada letra

String surname = "Petrov";
if (surname.charAt(0) == 'P')
{
    System.out.println("O sobrenome começa com a letra P");
}

Exercício 4: Obter o domínio do email

String email = "vasya.pupkin@gmail.com";
int at = email.indexOf('@');
String domain = email.substring(at + 1);
System.out.println("Domínio: " + domain); // "gmail.com"

Exercício 5: Encontrar todas as ocorrências da letra 'a' na string

String s = "abrakadabra";
int pos = s.indexOf('a');
while (pos != -1) 
{
    System.out.println("A letra 'a' foi encontrada na posição: " + pos);
    pos = s.indexOf('a', pos + 1); // procurando a partir da última posição encontrada
}

9. Erros comuns ao trabalhar com métodos de String

Erro nº 1: acesso fora dos limites da string
Com frequência os índices são confundidos e tenta-se acessar um caractere/substrig inexistente.

String s = "Java";
char c = s.charAt(4); // Erro! Índices 0..3
String s = "Hello";
String sub = s.substring(3, 10); // Erro! Comprimento da string — 5

Erro nº 2: confusão sobre incluir ou não o índice final
O método substring(start, end) inclui o caractere no índice start, mas NÃO inclui o caractere no índice end.

Erro nº 3: esperar que indexOf retorne algo diferente de -1 quando a substring não existe
Verifique o resultado antes de usar, especialmente se depois você for usá-lo em substring.

Erro nº 4: tratamento incorreto de strings vazias
Se a string estiver vazia (""), chamadas a charAt(0) ou substring(0, 1) causarão erro. Verifique o comprimento antes.

Erro nº 5: trabalhar com strings null
Se a string for null, chamar qualquer método (length(), substring() etc.) lançará NullPointerException. Sempre verifique null antes do processamento.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION