Atualizado: 26/07/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Principais Operações com Strings

Concatenação de Strings

A forma mais direta de unir strings é através do operador de concatenação +.

String str1 = "Java";
String str2 = "Hello";
String str3 = str2 + " " + str1;

System.out.println(str3); // Exibe: Hello Java

Se um tipo de dado que não é uma string, como um número, for incluído na operação, Java o converterá automaticamente para sua representação em string. Essencialmente, o compilador utiliza o método String.valueOf() para realizar essa conversão. Para objetos, o método toString() é invocado.

String str3 = "Ano " + 2025; // O inteiro 2025 é convertido para a string "2025"

Uma alternativa é o método concat(), que anexa uma string ao final de outra, retornando um novo objeto String com o resultado.

String str1 = "Java";
String str2 = "Hello";
str2 = str2.concat(str1); // str2 agora contém "HelloJava"

Notavelmente, o método estático String.join() oferece uma maneira elegante de unir múltiplas strings usando um delimitador comum. O primeiro argumento é o delimitador, e os demais são as strings a serem unidas. Esta abordagem é frequentemente preferível por sua legibilidade, especialmente ao lidar com várias strings.

String str1 = "Java";
String str2 = "Hello";
String str3 = String.join(" ", str2, str1); // str3 contém "Hello Java"

Extração de Caracteres e Substrings

Para obter um caractere específico de uma string, utiliza-se o método charAt(int index). Ele recebe um índice (baseado em zero) e retorna o char naquela posição.

String str = "Java";
char c = str.charAt(2);
System.out.println(c); // Exibe 'v'

Para extrair uma sequência de caracteres char para um array existente, pode-se usar o método getChars(). Seus parâmetros definem:

  • o índice inicial e final (não incluso) na string de origem
  • o array de destino
  • o índice onde a inserção deve começar nesse array
String str = "Hello world!";
int start = 6;
int end = 11;
// Cria um array de tamanho adequado (5 neste caso)
char[] dst = new char[end - start];
// Copia os caracteres de 'str' do índice 6 ao 10 (5 caracteres) para 'dst' a partir do índice 0
str.getChars(start, end, dst, 0);
// dst agora contém os caracteres 'w', 'o', 'r', 'l', 'd'
System.out.println(dst); // Exibe: world

Comparação de Strings

A comparação de conteúdo entre strings deve ser feita com os métodos equals() (que diferencia maiúsculas e minúsculas) e equalsIgnoreCase() (que as ignora). É fundamental não usar o operador == para essa finalidade, pois == compara as referências de memória dos objetos, ou seja, verifica se duas variáveis apontam para o mesmo objeto, e não se seus conteúdos são idênticos.

String str1 = "Hello";
String str2 = "hello";

System.out.println(str1.equals(str2)); // Retorna false
System.out.println(str1.equalsIgnoreCase(str2)); // Retorna true

Para cenários mais específicos, o método regionMatches() compara partes (substrings) de duas strings, sendo útil para verificar se segmentos específicos coincidem.

Os métodos compareTo() e compareToIgnoreCase() também comparam strings, mas retornam um valor inteiro que indica sua ordem lexicográfica (alfabética).

  • Valor < 0: a primeira string vem antes da segunda.
  • Valor > 0: a primeira string vem depois da segunda.
  • Valor 0: as strings são equivalentes.
String str1 = "hello";
String str2 = "world";
String str3 = "hell";

System.out.println(str1.compareTo(str2)); // Retorna -15 (um valor negativo)
System.out.println(str1.compareTo(str3)); // Retorna 1 (um valor positivo)

Busca em Strings

Para localizar ocorrências, indexOf() retorna o índice da primeira aparição de um caractere ou substring, enquanto lastIndexOf() retorna o da última. Se não encontrado, ambos retornam -1.

String str = "Hello world";
int index1 = str.indexOf('l');       // Retorna 2
int index2 = str.indexOf("wo");      // Retorna 6
int index3 = str.lastIndexOf('l'); // Retorna 9
int index4 = str.lastIndexOf("gg"); // Retorna -1

Os métodos startsWith() e endsWith() são booleanos e verificam se uma string começa ou termina com um determinado prefixo ou sufixo.

String str = "myfile.exe";
boolean start = str.startsWith("my"); // Retorna true
boolean end = str.endsWith("exe");   // Retorna true

Métodos de Transformação de Strings

Como strings são imutáveis, os métodos a seguir não alteram a string original; eles sempre retornam uma nova string com a transformação aplicada.

  • replace(): Retorna uma nova string com todas as ocorrências de um caractere ou substring substituídas.

    String str = "Hello world";
    String replStr = str.replace("l", "z"); // Retorna "Hezzo worzd"
  • trim(): Retorna uma nova string sem os espaços em branco (whitespace) no início e no final.

    String str = "  hello world  ";
    str = str.trim(); // str agora contém "hello world"
  • substring(): Extrai uma parte da string. Com um argumento, extrai do índice até o final. Com dois, extrai do índice inicial até o índice final, sem incluir o caractere na posição final.

    String str = "Hello world";
    String substr1 = str.substring(6);    // Retorna "world"
    String substr2 = str.substring(3, 5); // Retorna "lo"
  • toLowerCase() / toUpperCase(): Retornam uma nova string com todos os caracteres convertidos para minúsculas ou maiúsculas, respectivamente.

    String str = "Hello World";
    System.out.println(str.toLowerCase()); // exibe: hello world
    System.out.println(str.toUpperCase()); // exibe: HELLO WORLD

Divisão de Strings (Split)

O método split() divide uma string em um array (String[]) com base em um delimitador. O delimitador em si é removido e não aparece nos resultados.

String text = "FIFA will never regret it";
String[] words = text.split(" ");
for(String word : words) {
    System.out.println(word);
}

A execução do código acima exibirá cada palavra em uma nova linha. Excelente! Aqui estão três novas tarefas práticas, elaboradas com base nos seus requisitos e no conteúdo do artigo.


📝 Exercícios

Perfeito! Adaptar as tarefas para que o usuário complete um método específico é uma excelente prática para ensinar a modularização do código.

Aqui estão as três tarefas reescritas no formato solicitado.


Tarefa 1: Formatar um Nome (Capitalização)

Objetivo: Complete o método formatarNome para que ele receba uma string com um nome e a retorne formatada, com apenas a primeira letra maiúscula e o restante em minúsculas.

Código inicial:

public class Main {
    public static void main(String[] args) {
        String nome = "jAVa";
        String nomeFormatado = formatarNome(nome);
        System.out.println(nomeFormatado); // O resultado esperado é "Java"
    }

    static String formatarNome(String nome) {
        // Escreva seu código aqui.
        // Você precisa retornar uma nova string formatada.

    }
}
Resposta

Solução:

public class Main {
    public static void main(String[] args) {
        String nome = "jAVa";
        String nomeFormatado = formatarNome(nome);
        System.out.println(nomeFormatado);
    }

    static String formatarNome(String nome) {
        if (nome == null || nome.isEmpty()) {
            return nome; // Retorna a string original se for nula ou vazia
        }
        String primeiraLetra = nome.substring(0, 1).toUpperCase();
        String restoDoNome = nome.substring(1).toLowerCase();
        return primeiraLetra + restoDoNome;
    }
}

Explicação:

O método formatarNome primeiro extrai a primeira letra (substring(0, 1)) e a converte para maiúscula (toUpperCase()). Em seguida, extrai o restante da string (substring(1)) e converte para minúsculas (toLowerCase()). Finalmente, concatena as duas partes e retorna o resultado. A verificação inicial (if) garante que o código não falhe caso receba uma string nula ou vazia.

Tarefa 2: Extrair um Valor Numérico

Objetivo: Complete o método extrairValorNumerico para que ele remova o símbolo de moeda ($) do início da string de preço e retorne apenas a parte numérica.

Código inicial:

public class Main {
	public static void main(String[] args) {
        String preco = "$120.50";
        String valorNumerico = extrairValorNumerico(preco);
        System.out.println(valorNumerico); // O resultado esperado é "120.50"
    }

    static String extrairValorNumerico(String preco) {
        // Escreva seu código aqui.
        // Você precisa retornar a string sem o primeiro caractere.

    }
}
Resposta

Solução:

public class Main {
	public static void main(String[] args) {
        String preco = "$120.50";
        String valorNumerico = extrairValorNumerico(preco);
        System.out.println(valorNumerico);
    }

    static String extrairValorNumerico(String preco) {
        if (preco == null || !preco.startsWith("$")) {
             return preco; // Retorna a string original se for inválida
        }
        return preco.substring(1);
    }
}

Explicação:

O método substring(1) cria e retorna uma nova string que é uma "fatia" da original, começando a partir do caractere no índice 1 (o segundo caractere) e indo até o final. Isso efetivamente ignora o caractere no índice 0, que é o símbolo $.

Tarefa 3: Obter um Valor de Dados Estruturados

Objetivo: Complete o método extrairValor para que ele receba uma string no formato "chave:valor" e retorne apenas a parte do valor.

Código inicial:

public class Main {
    public static void main(String[] args) {
        String dados = "produto:Teclado";
        String valor = extrairValor(dados);
        System.out.println(valor); // O resultado esperado é "Teclado"
    }

    static String extrairValor(String dados) {
        // Escreva seu código aqui.
        // Você precisa dividir a string e retornar a segunda parte.

    }
}
Resposta

Solução:

public class Main {
    public static void main(String[] args) {
        String dados = "produto:Teclado";
        String valor = extrairValor(dados);
        System.out.println(valor);
    }

    static String extrairValor(String dados) {
        String[] partes = dados.split(":");
        if (partes.length > 1) {
            return partes[1];
        }
        return null; // ou retorna uma string vazia, dependendo do requisito
    }
}

Explicação:

O método split(":") divide a string dados em um array de strings usando o caractere : como delimitador. O array resultante, partes, conterá {"produto", "Teclado"}. A linha return partes[1] acessa e retorna o segundo elemento desse array (o de índice 1), que corresponde ao valor desejado. A verificação if garante que o programa não quebre se a string de entrada não contiver o delimitador.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com