1. Razones para escapar de los personajes

Érase una vez, aprendió que para escribir una cadena de caracteres en el código, debe envolverlos entre comillas dobles. El resultado es un literal de cadena .

Pero, ¿qué hacemos si necesitamos comillas dentro de un literal de cadena? Una cadena que contiene comillas: ¿qué podría ser más fácil?

Digamos que queremos mostrar el texto "Friends" was nominated for an "Oscar". ¿Cómo haces eso?

Código notas
String s = ""Friends" was nominated for an "Oscar"";
¡Esta opción no funcionará!

El problema es que el compilador cree que estás escribiendo un código completamente inesperado:

Código notas
String s = ""Friends" was nominated for an "Oscar"";
¡Esta opción no funcionará!

Después de que el compilador encuentra comillas dobles en el código, trata lo que sigue como el comienzo de una cadena literal. La siguiente comilla doble indica el final del literal de cadena.

Entonces, ¿cómo escribes comillas dobles dentro de un literal?


2. Personajes que se escapan

Hay una manera. Se llama caracteres de escape . Simplemente escriba las comillas dentro de la cadena de texto. Y antes de las comillas, agrega el símbolo \( barra invertida ).

Así es como se ve el literal de cadena cuando se escribe correctamente:

Código notas
String s = "\"Friends\" was nominated for an \"Oscar\"";
¡Esto funcionará!

El compilador interpretará todo correctamente y no considerará las comillas después de la barra invertida como una comilla normal.

Además, si envía esta cadena a la pantalla, las comillas con barras invertidas se procesarán correctamente y el texto se mostrará sin barras invertidas:"Friends" was nominated for an "Oscar"

Otro punto importante. Una comilla precedida por una barra invertida representa un solo carácter: simplemente estamos usando una notación elegante que no interfiere con la capacidad del compilador para reconocer cadenas literales en nuestro código. Puede asignar comillas a una charvariable:

Código notas
char c = '\"';
\"es un personaje, no dos
char c = '"';
Esto también es posible: una comilla doble dentro de comillas simples

3. Situaciones comunes que ocurren cuando los personajes escapan

Situaciones comunes que involucran personajes que escapan

Además de las comillas dobles, hay muchos otros caracteres que el compilador maneja de manera especial. Por ejemplo, un salto de línea.

¿Cómo agregamos un salto de línea a un literal? También hay una combinación especial para esto:

\n
Carácter de salto de línea

Si necesita agregar un salto de línea a un literal de cadena, solo necesita agregar un par de caracteres: \n.

Ejemplo:

Código Salida de consola
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

Hay un total de 8 combinaciones especiales como esta, que también se denominan secuencias de escape . Aquí están:

Código Descripción
\t Insertar un carácter de tabulación
\b Insertar un carácter de retroceso
\n Insertar un carácter de nueva línea
\r Insertar un carácter de retorno de carro
\f Insertar un carácter de avance de página
\' Insertar una comilla simple
\" Insertar una comilla doble
\\ Insertar una barra invertida

Estás familiarizado con dos de ellos, pero ¿qué significan los otros 6?

\tes un carácter de tabulación

Cuando este texto aparece en el texto, es equivalente a presionar la Tabtecla mientras se escribe. Desplaza el texto que le sigue y permite alinear el texto.

Ejemplo:

Código Salida de consola
System.out.println("0\t1\t2\t3");
System.out.println("0\t10\t20\t30");
System.out.println("0\t100\t200\t300");
0       1        2        3
0       10       20       30
0       100      200      300

\bsignifica 'retroceder un carácter'

Esta secuencia en una cadena es equivalente a presionar la Backspacetecla en el teclado. Elimina el carácter que le precede:

Código Salida de consola
System.out.println("Hello\b\b World");
Hell World!

\res el carácter de retorno de carro

Este carácter mueve el cursor al principio de la línea actual sin cambiar el texto. Lo que se muestre a continuación sobrescribirá la cadena existente.

Ejemplo:

Código Salida de consola
System.out.println("Greetings\r World!");
World!

\fes un carácter de avance de página

Este símbolo nos llega desde los días de las primeras impresoras matriciales. Enviar esta secuencia a una impresora haría que la impresora simplemente alimentara la hoja actual, sin imprimir ningún texto, hasta que comience una nueva página.

Ahora lo llamaríamos salto de página o página nueva .

\\es una barra invertida

Todo es sencillo aquí. Si usamos una barra invertida para escapar de los caracteres en nuestro texto, entonces, ¿cómo escribimos un carácter de barra invertida en la cadena?

Es simple: agregue una barra invertida al texto; debe escribir dos seguidos.

Ejemplo:

Código Salida de consola
System.out.println("c:\projects\my\first");
El compilador le gritará por caracteres escapados desconocidos.
System.out.println("c:\\projects\\my\\first");
¡Así es como se hace bien!

1
Tarea
Módulo 1. Java Syntax,  nivel 11lección 1
Bloqueada

Convertidor octal

task0905

4. Codificación Unicode

Como ya sabes, cada carácter que se muestra en la pantalla corresponde a un código numérico específico. Un conjunto estandarizado de estos códigos se denomina codificación .

Érase una vez, cuando las computadoras se inventaron recientemente, siete bits (menos de un byte) eran suficientes para codificar cada carácter. La primera codificación contenía solo 128 caracteres. Esta codificación se denominó ASCII .

ASCII significa Código estándar estadounidense para el intercambio de información, una tabla de códigos estándar estadounidense para caracteres imprimibles y algunos códigos especiales.

Consta de 33 caracteres de control no imprimibles (que afectan la forma en que se procesan el texto y los espacios) y 95 caracteres imprimibles, incluidos números, letras latinas mayúsculas y minúsculas y varios signos de puntuación.

Codificación Unicode

A medida que las computadoras crecieron en popularidad, cada país comenzó a lanzar su propia codificación. Por lo general, tomaron ASCII como punto de partida y reemplazaron los caracteres ASCII que rara vez se usaban con símbolos de sus respectivos alfabetos.

Con el tiempo, surgió una idea: crear una única codificación que contuviera todos los caracteres de todas las codificaciones del mundo.

Codificación Unicode 1

Así, en 1993 se creó la codificación Unicode , y el lenguaje Java se convirtió en el primer lenguaje de programación que utilizó esta codificación como estándar para almacenar texto. Ahora Unicode es el estándar para toda la industria de TI.

Aunque Unicode en sí es el estándar, tiene varias representaciones o formatos de transformación Unicode (UTF): UTF-8, UTF-16 y UTF-32, etc.

Java utiliza una versión avanzada de codificación Unicode: UTF-16: cada carácter está codificado en 16 bits (2 bytes). ¡Puede acomodar hasta 65,536 caracteres!

Puede encontrar casi todos los caracteres de todos los alfabetos del mundo en esta codificación. Naturalmente, nadie tiene todo memorizado. No se puede saber todo, pero se puede googlear todo.

Para escribir un carácter Unicode en su programa utilizando su código, debe escribir \u+ el código en hexadecimal . Por ejemplo,\u00A9

Código Salida de consola
System.out.println("\u00A9 CodeGym");
© CodeGym

1
Tarea
Módulo 1. Java Syntax,  nivel 11lección 1
Bloqueada
Convertidor binario
task0906

5. Unicode: punto de código

"¡640 kilobytes deberían ser suficientes para todos! O no". (Cita atribuida a Bill Gates)

La vida es dura y, con el tiempo, la codificación UTF-16 comenzó a ser inadecuada. Resulta que hay muchos idiomas asiáticos y tienen muchos glifos. Y todos estos glifos simplemente no se pueden meter en 2 bytes.

¿Qué se puede hacer? ¡Usa más bytes !

Pero el tipo char tiene solo 2 bytes y cambiarlo a 4 no es tan fácil: se han escrito miles de millones de líneas de código Java en todo el mundo, que se romperían si el tipo char se convierte repentinamente en 4 bytes en una máquina Java. ¡Así que no podemos cambiar el tipo de char!

Hay otro enfoque. Recuerda cómo escapamos de los caracteres poniendo una barra invertida delante de ellos. Básicamente, codificamos un solo carácter usando varios caracteres.

Los creadores de Java decidieron usar el mismo enfoque.

Algunos caracteres que aparecen visualmente como un solo carácter están codificados como dos chars en una cadena:

Código Salida de consola
System.out.println("\uD83D\uDD0A");
🔊

Ahora su programa Java puede incluso enviar emojis a la consola 😎


1
Tarea
Módulo 1. Java Syntax,  nivel 11lección 1
Bloqueada

Convertidor Hexadecimal

task0907