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
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.
GO TO FULL VERSION