Java:
Extraindo substrings

How to:

public class ExtractorDeSubstring {
    public static void main(String[] args) {
        String texto = "O café está quente.";
        // Extrair a palavra "café"
        String cafe = texto.substring(2, 6);
        System.out.println(cafe); // Saída: café
        
        // Extrair a palavra "quente"
        String quente = texto.substring(12);
        System.out.println(quente); // Saída: quente
    }
}

Execute o código acima e você vai ver as partes “café” e “quente” sendo impressas na tela.

Deep Dive

A capacidade de extrair substrings existe desde as primeiras versões do Java. Originalmente, a classe String oferecia métodos substring() que funcionavam criando uma nova string com os mesmos caracteres da string original, a partir de um índice inicial até um final. Isso mudou um pouco para evitar desperdício de memória e agora cria uma nova string que compartilha o mesmo array de caracteres interno, desde que isso seja possível.

Existem alternativas para extrair substrings, como usar String.split(), StringTokenizer ou expressões regulares com a classe Pattern. No entanto, substring() é geralmente o caminho mais direto e eficiente quando você sabe exatamente os índices dos caracteres que deseja.

Quanto à implementação, até Java 6, o método substring() compartilhava o array de caracteres da string original, o que podia levar a problemas de memória se a string original fosse muito grande e a substring muito pequena. Esse comportamento mudou a partir do Java 7 (update 6), onde a chamada de substring() resulta em uma cópia do range de caracteres desejado, evitando assim a retenção não intencional de grandes arrays de caracteres.

See Also