Introdução à Classe String em Java
Uma string representa uma sequência de caracteres. Para a manipulação de strings em Java, a linguagem oferece a classe String, que disponibiliza um conjunto de métodos para essa finalidade. Tecnicamente, um objeto String funciona como uma referência a uma área na memória onde a sequência de caracteres está armazenada.
Para instanciar uma nova string, é possível tanto usar um dos construtores da classe String quanto atribuir diretamente um literal de string (um valor entre aspas duplas):
public static void main(String[] args) {
String str1 = "Java";
String str2 = new String(); // Cria uma string vazia
String str3 = new String(new char[] {'h', 'e', 'l', 'l', 'o'}); // Cria a partir de um array de caracteres
String str4 = new String(new char[]{'w', 'e', 'l', 'c', 'o', 'm', 'e'}, 3, 4); // Onde 3 é o índice inicial e 4 é o número de caracteres
System.out.println(str1); // Exibe: Java
System.out.println(str2); // Exibe uma linha em branco
System.out.println(str3); // Exibe: hello
System.out.println(str4); // Exibe: come
}Ao lidar com strings, é fundamental compreender que objetos da classe String são imutáveis (immutable). Isso significa que qualquer operação que aparentemente modifica uma string, na verdade, cria um novo objeto String em memória com o resultado da alteração.
Considerando que uma string é uma sequência de caracteres, o método length() pode ser aplicado para obter a sua quantidade de caracteres:
String str1 = "Java";
System.out.println(str1.length()); // Retorna 4De forma inversa, o método toCharArray() permite converter uma string de volta para um array de caracteres:
String str1 = new String(new char[] {'h', 'e', 'l', 'l', 'o'});
char[] helloArray = str1.toCharArray();Strings Vazias e Nulas
Uma string pode estar vazia, o que significa que ela existe como objeto, mas não contém caracteres. O comprimento de uma string vazia, retornado pelo método length(), é 0. A forma mais comum de verificar se uma string está vazia é com o método isEmpty(), que retorna true nesse caso.
String s = ""; // String vazia
if (s.isEmpty()) System.out.println("A string está vazia");Por outro lado, uma variável String pode ter o valor null, indicando que ela não aponta para objeto algum.
String s = null; // A variável não referencia um objeto
if (s == null) System.out.println("A string é nula");É crucial não confundir uma string nula com uma vazia. Tentar chamar qualquer método em uma variável nula, como length() ou isEmpty(), resultará em um NullPointerException em tempo de execução.
String s = null; // A variável não referencia um objeto
// A linha abaixo causará um erro em tempo de execução (NullPointerException)
if (s.isEmpty()) System.out.println("String is empty"); // ! ErroPara evitar essa falha, é uma boa prática verificar se a variável é nula antes de tentar usar seus métodos. Frequentemente, a verificação é feita para ambas as condições: nula ou vazia.
String s = null; // A variável não referencia um objeto
if (s == null || s.isEmpty()) System.out.println("A string é nula ou está vazia");Principais Métodos da Classe String
As operações mais comuns com strings são realizadas através dos métodos da classe String. Abaixo estão alguns dos mais importantes:
concat(): Concatena uma string ao final de outra.valueOf(): Converte diferentes tipos de dados (como números) para sua representação em string.join(): Une várias strings em uma só, usando um delimitador especificado.compareTo(): Compara duas strings lexicograficamente (ordem de dicionário).charAt(): Retorna o caractere (char) em um índice específico da string.getChars(): Copia uma sequência de caracteres da string para um array de destino.equals(): Compara o conteúdo de duas strings. A comparação diferencia maiúsculas de minúsculas.equalsIgnoreCase(): Compara o conteúdo de duas strings, ignorando as diferenças entre maiúsculas e minúsculas.regionMatches(): Compara uma região (substring) de uma string com uma região de outra.indexOf(): Retorna o índice da primeira ocorrência de um caractere ou substring.lastIndexOf(): Retorna o índice da última ocorrência de um caractere ou substring.startsWith(): Verifica se a string começa com um determinado prefixo (substring).endsWith(): Verifica se a string termina com um determinado sufixo (substring).replace(): Substitui todas as ocorrências de um caractere ou substring por outro.trim(): Remove todos os espaços em branco no início e no fim da string.substring(): Extrai uma nova string a partir de um índice inicial até o final ou até um índice final especificado.toLowerCase(): Converte todos os caracteres da string para minúsculas.toUpperCase(): Converte todos os caracteres da string para maiúsculas.
O funcionamento detalhado desses métodos será explorado a seguir.
📝 Exercícios
Tarefa 1
Qual será o resultado da execução do seguinte trecho de código?
String s = null;
if(s.isEmpty()) {
System.out.println("A string está vazia");
} else {
System.out.println("A string não está vazia");
}Alternativas:
A string está vaziaA string não está vazia- O código não irá compilar
- Ocorrerá um
NullPointerExceptionem tempo de execução - Ocorrerá um
ArrayIndexOutOfBoundsException
Resposta
NullPointerException em tempo de execução.
null não aponta para nenhum objeto na memória. O código tenta chamar o método isEmpty() em uma referência nula (s). Isso é uma operação ilegal em Java, pois não há um objeto String para executar o método, resultando em um NullPointerException. É fundamental diferenciar uma string nula de uma string vazia (""), na qual a chamada de métodos é permitida.
Tarefa 2
Qual string será exibida pelo código a seguir?
char[] caracteres = {'p', 'r', 'o', 'g', 'r', 'a', 'm', 'a', 'n', 'd', 'o'};
String s1 = new String(caracteres, 0, 8);
String s2 = " Java";
String resultado = s1.concat(s2);
System.out.println(resultado);Alternativas:
programan Javaprogramando Javaprograma Java- Ocorrerá um erro de compilação
programandoJava
Resposta
programa Java.
String s1 = new String(caracteres, 0, 8);: Esta linha usa um dos construtores da classe String mencionados no artigo. Ele cria uma nova string a partir do array caracteres, começando no índice 0 e usando 8 caracteres. Portanto, s1 se torna "programa".String s2 = " Java";: A variável s2 é inicializada com o literal " Java".String resultado = s1.concat(s2);: O método concat() une a string s2 ao final da string s1. A operação "programa".concat(" Java") resulta na string "programa Java".