1. Caracteres especiais básicos e escape
Em programação, as strings são compostas não só por letras, mas também por caracteres especiais: aspas, quebras de linha, tabulações e, às vezes, até símbolos como \n e \t. Mas, se você quiser escrever na string Olá, "user"!, o compilador logo vai perguntar: “E as aspas dentro da string — isso é um erro?”. É aí que entra o mecanismo de escape.
Em Java, o escape é uma forma de “indicar um tratamento especial” para certos caracteres dentro da string. Para isso, usa-se a barra invertida \ (também chamada “backslash”).
Caracteres especiais clássicos:
| Sequência | Descrição | Demonstração |
|---|---|---|
|
Quebra de linha | Pressionou Enter |
|
Tabulação | Tab |
|
Literalmente “barra invertida” | |
|
Aspas dentro da string | |
|
Aspas simples (raramente necessário em strings) | |
|
Retorno de carro (estilo antigo de quebra de linha, raramente usado) | |
|
Caractere nulo | (Invisível) |
|
Backspace (apaga o caractere anterior — nem sempre funciona no console) |
Como funciona
Vamos escrever algumas linhas com caracteres escapados para vê-los em ação.
System.out.println("Olá, \"Usuário\"!");
// Saída: Olá, "Usuário"!
System.out.println("C:\\Program Files\\MyApp");
// Saída: C:\Program Files\MyApp
System.out.println("Linha 1\nLinha 2");
// Saída:
// Linha 1
// Linha 2
System.out.println("Eu\tadoro\ttabulação!");
// Saída:
// Eu adoro tabulação!
Assim, com a ajuda de uma única barrinha (\), você consegue “inserir” praticamente qualquer caractere especial na string sem causar pânico no compilador ou no colega de equipe.
2. Strings multilinha e quebras de linha
Muitas vezes é necessário escrever uma mensagem multilinha ou ASCII art. A forma mais direta — usar \n em uma string comum.
System.out.println("Primeira linha\nSegunda linha\nTerceira linha");
No entanto, isso nem sempre é conveniente, por isso o Java ganhou os blocos de texto (Text Blocks). Eles começam com aspas triplas """ e permitem escrever texto multilinha sem escape, preservando a formatação — ideal para JSON, SQL e HTML.
// Literal multilinha (Text Block)
String json = """
{
"name": "Alice",
"age": 30,
"skills": ["Java", "SQL", "Cloud"]
}
""";
System.out.println(json);
"""
Com blocos de texto, você também pode criar facilmente um texto multilinha que inclui aspas, sem duplicá-las.
3. Unicode — como o Java armazena quaisquer caracteres do mundo
No mundo atual, trabalhamos não só com o alfabeto latino, mas também com o cirílico, ideogramas, símbolos matemáticos e até emojis. Tudo isso é possível graças ao sistema de codificação de caracteres — Unicode.
O que é Unicode?
Unicode é um padrão internacional que atribui um número exclusivo (code point) a cada caractere, independentemente do idioma e da plataforma. Graças a isso, você pode usar simultaneamente, no Java, texto em cirílico, inglês, ideogramas chineses e até caracteres especiais raros.
Exemplo de string em diferentes idiomas:
System.out.println("Hello, mundo! 你好! مرحبا!");
Caracteres Unicode em strings
Você pode escrever diretamente quaisquer caracteres suportados pela sua codificação ou usar sequências de escape do tipo \uXXXX, onde XXXX é o código hexadecimal de 4 dígitos do caractere.
System.out.println("Símbolo: \u263A"); // Exibe 😊
Para caracteres com código acima de 65535 (por exemplo, muitos emojis) usa-se um par de substitutos (UTF-16):
// O símbolo 😊 (código 1F60A) é representado por dois char
System.out.println("Emoji: \uD83D\uDE0A"); // Exibe 😊
O que isso lhe dá?
- Você pode armazenar e processar qualquer texto.
- Não tenha medo de misturar idiomas e usar caracteres fora do comum — o Java suporta Unicode “de fábrica”.
- É especialmente importante ao trabalhar com usuários internacionais e alfabetos não padronizados.
4. Emojis e caracteres especiais em strings
Strings modernas não são apenas letras, mas também emojis! Por exemplo, você quer enviar ao usuário uma mensagem divertida com um “sorriso”.
Como adicionar um emoji à string?
Insira o emoji diretamente na string:
System.out.println("Olá! 😊");
Use códigos Unicode: para a maioria dos emojis, você pode usar pares substitutos.
System.out.println("Aqui está um gatinho: \uD83D\uDC31"); // 🐱
Emojis podem ocupar dois caracteres na string (por causa do UTF-16). Portanto, em algumas operações (por exemplo, obter o comprimento) podem ocorrer surpresas:
String s = "😊";
System.out.println(s.length()); // Imprime 2, não 1!
Isso ocorre porque um único code point Unicode é codificado como dois char no Java. Para trabalhar corretamente com os caracteres, use code points e os métodos correspondentes em vez de length().
5. Armadilhas e erros comuns
Erro nº 1: uso incorreto de aspas dentro da string. Se você não escapar as aspas internas, o compilador “acha” que a string terminou.
System.out.println("Ele disse: "Olá!""); // Erro!
Correto:
System.out.println("Ele disse: \"Olá!\"");
Erro nº 2: barra invertida única no caminho. Em Java, a \ é usada para caracteres especiais (\n, \t, \f etc.). Portanto, a string "C:\Temp\file.txt" é interpretada incorretamente.
System.out.println("C:\Temp\file.txt"); // Erro ou resultado inesperado
Correto:
System.out.println("C:\\Temp\\file.txt"); // Barras invertidas duplas
Erro nº 3: ignorar os blocos de texto. A partir do Java 15, use os blocos de texto — isso simplifica o trabalho com strings multilinha.
String path = """
C:\Temp\file.txt
""";
System.out.println(path);
Regra principal: sempre escape caracteres especiais e aspas. Isso evita bugs ocultos e economiza horas de depuração.
GO TO FULL VERSION