"Amigo, te envidio. ¡Aprender cosas nuevas es tan maravilloso! Y hoy te espera un tema nuevo e interesante: los literales".

"Aparentemente debería decir que soy el estudiante robot más feliz del planeta, Rishi. Bueno, ¡estoy listo para absorber el nuevo conocimiento!"

"Vamos a hacerlo de inmediato entonces. Los literales son datos específicos escritos directamente en el código de un programa. No estamos hablando de cualquier dato. Solo estamos hablando de tipos primitivos y cadenas.

Por ejemplo, suponga que tiene este código:

Código literales
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

"Los literales en este código son el número 5 , el número 10 y la cadena ' Suma = '.

Literales enteros

"En Java, todo, incluidos los literales, tiene un tipo. Todos los literales enteros (enteros) en el código son enteros . El tipo int es el tipo entero estándar de Java".

Conozco este tipo. Lo he usado.

"¿Recuerdas otros tipos de enteros además de int? ¿Algunos que ocupan menos espacio en la memoria?"

"¡Por supuesto! Byte y corto".

"Esos son los indicados. Entonces, si en tu código decides asignar un literal entero a una variable de tipo byte o short, no habrá problemas. Lo principal es que el valor del literal esté dentro del rango de valores que el El compilador de Java es lo suficientemente inteligente como para comprender que a una variable de byte se le puede asignar el literal entero 100.

Ejemplos:

Código Descripción
int a = 300;
Esto se compilará muy bien.
byte a = 100; 
Esto se compilará muy bien.
byte a = 300; 
Habrá un error de compilación, porque el valor máximo de bytes es 127.

"¿Qué pasa con el tipo largo ?"

"También podemos escribir literales de este tipo en nuestro código. Para ello, agregue la letra latina 'L' o 'l' al final del entero.

Ejemplos:

Código Descripción
long a = 3000000000L; 
Esto se compilará muy bien.
long a = 3000000000; 
Error de compilación: 3 mil millones es demasiado grande para un literal int.
int a = 3000000000L; 
Error de compilación: el literal es largo, pero la variable es un int. Además, 3 mil millones es más que el int máximo.

"¿Te diste cuenta de lo difícil que es leer grandes números de 10 o más dígitos?

"Sí, si no tiene habilitada su robovisión, entonces no quedará claro de inmediato si estamos hablando de 3 mil millones o 30".

"Para hacer que el código sea más legible (¡y esto es importante!), Java permite que se inserten guiones bajos en literales numéricos (no afectan el valor del número).

"El ejemplo anterior se puede reescribir con guiones bajos para que quede un poco más claro:

Código Descripción
long a = 3_000_000_000L; 
Esto se compilará muy bien.
long a = 3_000_000_000; 
Error de compilación: 3 mil millones es demasiado grande para un literal int.
int a = 3_000_000_000L; 
Error de compilación: el literal es largo, pero la variable es un int. Además, 3 mil millones es más que el int máximo.

"Esto es mucho más conveniente de leer, ¡aunque una coma en lugar de un guión bajo sería más familiar!"

"Pero no podemos usar comas en literales numéricos porque ya se usan para otro propósito. Por ejemplo, para separar argumentos entre sí al llamar a un método.

Literales de números reales

"Probablemente ya haya adivinado que en su código puede especificar no solo números enteros, sino también literales de coma flotante (números reales)".

"¿Tanto dobles como flotadores?"

"Sí. En realidad, la regla es bastante simple: si un número en el código tiene un punto decimal, entonces el número es un literal de punto flotante. Y no cualquier literal, sino un doble literal. Para crear un literal flotante , debe necesita poner la letra 'F' (o 'f') al final del número .

Ejemplos:

Código Descripción
double a = 100.0; 
Esto se compilará muy bien.
double a = 100.;
Esto se compilará muy bien.
double a = .0;
Esto se compilará muy bien.
float a = 100.0f; 
Esto se compilará muy bien.
float a = 100.0; 
Habrá un error de compilación: la variable es un flotante, pero el literal es un doble.

"Por cierto, puede convertir explícitamente un literal entero en un literal flotante o doble simplemente agregando el sufijo 'F' (para flotante ) o D (para doble ). Ejemplos:

Código Descripción
double a = 100D; 
Esto se compilará muy bien.
float a = 100F; 
Esto se compilará muy bien.
int a = 300D; 
Habrá un error de compilación: la variable es un int, pero el literal es un double .

"Los literales de punto flotante pueden usar notación científica : además de la parte firmada del número, también puede especificar una potencia de diez. Ejemplo:

Literal notación matemática Valor final
1.23 mi 2 1,23*10 2 123.0
1.23 mi 3 1,23*103 1230.0
1.23 E -6 1,23*10 -6 0.00000123
1 mi 6 1.0 *10 6 1000000.0
1 E -10 1,0*10 -10 0.0000000001

Literales de cadena

"También puede especificar líneas enteras de texto en su código. Para indicarle al compilador que trate una cadena como datos (un literal) y no como parte del código, la cadena completa está entre comillas dobles en ambos lados.

"Si una sola línea de código tiene varias comillas dobles, entonces se dividen en pares. La primera comilla doble indica el comienzo de un literal. La siguiente indica el final del literal. La siguiente marca una vez más el comienzo de un nuevo literal, y el siguiente marca el final del segundo literal, y así sucesivamente.

"Cada uno de esos literales es un String .

Ejemplos

Código Explicación
"+"+"+"+"+"+"+"+"+"
Hay 5 literales en una línea. Cada uno de ellos consta de un único carácter '+'
""
Este literal es una cadena vacía. Una cadena sin caracteres.
"2+3"+"-5"
Hay dos literales aquí. El resultado será la cadena '2+3-5', no un número
"return"+";"
También hay dos literales aquí. Aquí no hay declaración de devolución.

"Si un literal de cadena es demasiado largo, puede dividirse en varias líneas y pegarse con el 'operador más':

Código Explicación
String s = "I hold it true, whate'er befall"
         + "I feel it when I sorrow most;"
         + "'Tis better to have loved and lost"
         + "Than never to have loved at all.";
Si envía esta línea a la pantalla, ¡todo el texto se mostrará en una sola línea!

Literales de caracteres

"¿Qué sucede si necesito un literal que sea un solo carácter en lugar de una cadena? ¿Debería crear una cadena que consista en un solo carácter?"

"No, en ese caso necesitas un literal cuyo tipo sea char. ¿Puedes adivinar cómo se designa el principio y el final de dicho literal?"

"¿Comillas simples?"

"Sí, y dentro de las comillas simples debe haber un carácter y solo un carácter. No puede usar comillas simples vacías.

Ejemplos:

Código Explicación
'A'
Un literal cuyo tipo es char. Contiene la letra latina 'A'.
'@' 
Un literal cuyo tipo es char. Contiene el símbolo '@'
'' 
Un literal cuyo tipo es char. Contiene un carácter japonés. Y esto también es posible.
'\u1f3a'
Un literal cuyo tipo es char. Contiene un carácter Unicode especificado por su número.

"El último ejemplo asigna un carácter Unicode usando una notación especial: primero tenemos el prefijo \u, seguido de 4 caracteres hexadecimales. Aprenderá más sobre esto en las próximas lecciones".