W3docs

Caracteres especiales y secuencias de escape en Java

Usa secuencias de escape en Java como \n, \t, \\, \" y escapes Unicode dentro de literales de cadena.

Algunos caracteres no pueden escribirse directamente dentro de un literal de cadena — un " terminaría la cadena, un salto de línea literal rompería la línea de código fuente, y una barra invertida ya tiene un trabajo especial: le indica al compilador que trate lo que sigue como un escape. Java resuelve esto con secuencias de escape: códigos cortos con prefijo de barra invertida que representan esos caracteres problemáticos. Un mecanismo separado, los escapes Unicode (\uXXXX), te permite escribir cualquier punto de código del Plano Multilingüe Básico usando su valor hexadecimal.

Esta página cubre las secuencias de escape estándar, los escapes dentro de literales char, los escapes Unicode y octales, cómo los bloques de texto relajan las reglas, y los errores más comunes que suelen cometer los desarrolladores.

Las secuencias de escape estándar

SecuenciaSignificado
\nnueva línea (LF, U+000A)
\rretorno de carro (CR, U+000D)
\ttabulación (U+0009)
\bretroceso (U+0008)
\favance de página (U+000C)
\"comilla doble
\'comilla simple
\\una sola barra invertida
\0carácter nulo (U+0000)
\sespacio (U+0020), añadido en Java 15

Ejemplos:

String multi = "Line 1\nLine 2\nLine 3";
String quoted = "She said \"hi\"";
String tabbed = "name\tage\tcity";
String path = "C:\\Users\\Ada\\code.java";

Al imprimir estas cadenas, las secuencias de escape se convierten en los caracteres reales:

Line 1
Line 2
Line 3
She said "hi"
name    age    city
C:\Users\Ada\code.java

Dentro de un literal char

Un literal char se encierra entre comillas simples. Las mismas secuencias de escape aplican, pero las reglas se invierten para las comillas: dentro de comillas simples debes escapar \', mientras que " puede escribirse directamente. (Dentro de una cadena delimitada por comillas dobles ocurre lo contrario — \" se escapa y ' se escribe directamente.)

char quote = '\'';   // a single-quote character
char tab   = '\t';   // a tab
char back  = '\\';   // one backslash
char dquote = '"';   // no escape needed here

Escapes Unicode

Para incrustar cualquier carácter del Plano Multilingüe Básico, usa \uXXXX donde XXXX es el punto de código en hexadecimal de 4 dígitos:

String greeting = "Café";       // "Café"
String pi = "π ≈ 3.14";   // "π ≈ 3.14"
char heart = '♥';               // '♥'

Los puntos de código fuera del BMP (la mayoría de emojis) requieren un par sustituto — dos escapes \uXXXX — por lo que casi siempre es más fácil pegar el carácter directamente.

Nota
Los escapes Unicode difieren de todas las demás secuencias de escape: el compilador traduce \uXXXX en un primer paso muy temprano, antes de que el código fuente se divida en tokens. Por eso, un (nueva línea) inesperado dentro de una cadena es un error de compilación en lugar de una nueva línea en tiempo de ejecución, y por eso \uXXXX es válido en cualquier lugar — comentarios, identificadores, incluso entre operadores. Los escapes ordinarios como \n y \t solo se interpretan más tarde, dentro de literales de cadena y char.

Escapes octales

\ seguido de 1 a 3 dígitos octales (0–7) representa el carácter con ese valor octal:

char c = '\101';   // 'A' (decimal 65)
char d = '\14';    // form feed

Raramente verás estos — los escapes Unicode son más claros.

Los bloques de texto sin formato evitan la mayoría de los escapes

En un bloque de texto (Java 15+), puedes escribir saltos de línea y comillas dobles sin escapar literalmente — perfecto para incrustar JSON, SQL o HTML. Las únicas secuencias que aún necesitas son \\ para una barra invertida literal y \uXXXX para Unicode:

String json = """
        {
          "name": "Ada",
          "tagline": "She invented programming"
        }
        """;

Observa que las claves "name" y "tagline" no necesitan \" — están dentro de un bloque """...""".

Una demostración

java— editable, runs on the server

Errores comunes

  • Escribir "\n" y esperar saltos de línea de Windows. \n es solo LF. Para saltos de línea correctos según la plataforma en salida formateada, usa %n dentro de printf / format — se expande al separador de línea del sistema.
  • Olvidar escapar las barras invertidas en expresiones regulares. Un patrón regex vive dentro de una cadena Java primero, por lo que pasa por dos capas de escape. Para coincidir con un dígito (\d) escribes la cadena "\\d" — el compilador convierte \\ en una sola barra invertida, y el motor de regex entonces lee \d. Para coincidir con una barra invertida literal necesitas cuatro: "\\\\".
  • Usar para insertar una nueva línea. es el punto de código de nueva línea, y dado que los escapes Unicode se traducen antes de que se ejecute el analizador léxico, el compilador sustituye un salto de línea real en medio de tu literal de cadena — lo que provoca un error de sintaxis. Usa \n para nuevas líneas dentro de cadenas; reserva \uXXXX para caracteres imprimibles.
  • Un escape Unicode incompleto o inválido. \u debe ir seguido de exactamente cuatro dígitos hexadecimales. "\u12" o "\uZZZZ" es un error de compilación, no una barra invertida literal. Si quieres un \u literal, escapa la barra invertida: "\\u".

Qué sigue

Números en Java examina en detalle los tipos numéricos, sus literales y su precisión.

Práctica

Práctica
¿Qué secuencia de escape representa una sola barra invertida dentro de un literal de cadena?
¿Qué secuencia de escape representa una sola barra invertida dentro de un literal de cadena?
Was this page helpful?