HOWTO · Java
Caracteres de escape en Java
Este artículo explica las secuencias de escape comunes en Java
En esta página
Las secuencias de escape de Java permiten incluir caracteres de control y comillas en literales de cadena y de carácter. Las ocho entradas siguientes son ejemplos comunes, no un catálogo exhaustivo de todas las formas de escape que admite Java.
Secuencias de escape de Java de un vistazo
| Secuencia | Significado |
|---|---|
\t |
Tabulador horizontal |
\b |
Carácter de control de retroceso |
\n |
Avance de línea, de uso común como salto de línea |
\r |
Carácter de control de retorno de carro |
\f |
Carácter de control de avance de página |
\' |
Comilla simple, cuando se necesita en un literal |
\" |
Comilla doble, cuando se necesita en un literal |
\\ |
Una barra invertida literal |
En el código fuente de Java, una secuencia de escape comienza con una barra invertida. El compilador la interpreta como parte del literal, por lo que el valor contiene el carácter representado y no los dos caracteres del código fuente que escriben el escape. Por ejemplo, \n en una cadena representa un carácter de avance de línea.
Usar secuencias de escape en literales de cadena y de carácter
Los literales de cadena de Java usan comillas dobles, como en "text"; los literales de carácter usan comillas simples y contienen un solo char, como en 'A'. Escapa una comilla cuando coincide con el delimitador: escribe \" dentro de una cadena y \' dentro de un literal de carácter. La otra comilla puede aparecer sin escape: una cadena puede contener ' y un literal de carácter puede contener ". Para incluir una barra invertida en el valor, se escribe \\ en el código fuente.
Un literal como "first\nsecond" contiene dos líneas cuando se interpreta su valor, mientras que "column A\tcolumn B" coloca un tabulador entre las etiquetas. Estos escapes son útiles cuando un valor debe incluir formato o puntuación que, de otro modo, cerraría el literal. No se puede insertar un salto de línea literal en una cadena ordinaria entre comillas ni en un literal de carácter; si se quiere un carácter de avance de línea en una cadena, se usa \n.
Qué hace cada secuencia de escape
La secuencia de tabulador inserta un tabulador horizontal. El ancho con el que se muestra depende de la aplicación que presenta el texto, ya que los tabuladores pueden alinearse en distintas posiciones de tabulación. El avance de línea añade el carácter de control correspondiente, que muchos terminales y visores de texto muestran como una línea nueva.
El retroceso representa un carácter de control: no borra texto fuente anterior ni garantiza que desaparezca un carácter mostrado. El retorno de carro mueve el cursor al comienzo de una línea en los destinos que lo interpretan de ese modo. El avance de página es otro carácter de control, asociado a menudo con los saltos de página, aunque muchas pantallas de texto modernas no muestran ningún efecto especial de página. Estos caracteres siguen formando parte del valor incluso cuando el destino no los muestra visiblemente.
Los escapes de comillas representan caracteres de comilla, y \\ representa una sola barra invertida. Usa \' cuando una comilla simple cerraría un literal de carácter y \" cuando una comilla doble cerraría una cadena. En una cadena, las comillas simples no requieren un tratamiento especial; en un literal de carácter, se puede escribir una comilla doble directamente entre los delimitadores de comilla simple.
Errores comunes y comportamiento de la salida
Este programa completo de Java combina un tabulador, un avance de línea, un carácter de comilla simple y barras invertidas en valores de cadena y de carácter. La ejecución proporcionada produjo la salida que aparece a continuación. Las etiquetas de esa salida permanecen en inglés porque el bloque se conserva sin cambios.
Ejecuta este ejemplo:
public class EscapeCharacters {
public static void main(String[] args) {
String message = "Name:\tAda\nLanguage:\tJava";
char quote = '\'';
String path = "C:\\Java\\bin";
System.out.println(message);
System.out.println("Quote: " + quote);
System.out.println("Path: " + path);
}
}
Name: Ada
Language: Java
Quote: '
Path: C:\Java\bin
Al solucionar problemas, distingue el valor que crea Java de la forma en que lo muestra un terminal, un visor de registros o un editor. El avance de línea no es el mismo carácter que el retorno de carro, y el retorno de carro no añade necesariamente una línea nueva. Según el destino, los caracteres de control pueden mover el cursor, afectar al formato o no producir ningún efecto visible. No atribuyas esas diferencias de visualización al comportamiento del compilador: la forma de escribir el escape determina el carácter del valor, mientras que el destino de salida determina cómo se presenta.