Un literal es un valor de tipo entero, real, lógico, carácter, cadena de caracteres o un valor nulo (null) que puede aparecer dentro de un programa. Ejemplos de literales en Java pueden ser:
150 12.4 “ANA” null ‘t’
Los literales suelen aparecer en la asignación de valores a las variables o formando parte de expresiones aritméticas o lógicas. Por ejemplo:
x = 25;
precio = 120.99;
mes = "enero";
descuento = precio – (precio * 5 / 100);
if(a > 3 && a < 5)
Cuando se utilizan literales, es muy importante tener en cuenta que Java es un lenguaje fuertemente tipado, esto quiere decir que realiza un control estricto de los tipos de datos que pueden contener las variables.
Por ejemplo, si una variable se ha declarado cono int no podremos asignarle un valor de tipo double.
int n = 2.5; //Esta asignación no es correcta y provocará un error.
Esta asignación provocaría un error ya que estamos asignando un valor no entero (2.5) a una variable declarada como int. Por lo tanto es muy importante saber de qué tipo es un literal para trabajar de forma correcta con ellos y no obtener resultados inesperados.
Los literales en Java pueden ser:
- Literales de tipo entero
- Literales enteros en base decimal
- Literales enteros en binario
- Literales enteros en base octal
- Literales enteros en base hexadecimal
- Literales de tipo real
- Literales de tipo carácter
- Literales de cadenas de caracteres
Literales Java de tipo entero
Son valores numéricos que no contienen decimales.
El tipo de los literales enteros es siempre int a no ser que ocurra lo siguiente:
- Que se incluya la letra ele mayúscula o minúscula al final del número en cuyo caso el literal será de tipo
long. - Que su valor absoluto supere el rango de valores del tipo int. En ese caso también será de tipo
long.
El signo + al principio del número es opcional y el signo – será obligatorio si el número es negativo.
Los literales de tipo entero en Java puede expresarse de cuatro formas distintas: base decimal (base 10), binario (base 2), octal (base 8) y hexadecimal (base 16).
Literales Java de tipo entero en base decimal
Está formado por 1 o más dígitos del 0 al 9.
El primer dígito debe ser distinto de cero.
Por ejemplo:
982 | literal entero de tipo int |
-25 | literal entero de tipo int |
+1200 | literal entero de tipo int. El signo + es opcional. |
1234 | literal entero de tipo int |
1234L | literal entero de tipo long. El tipo long lo indica la L final. El carácter ele puede aparecer en mayúscula o minúscula. |
123400000000 | literal entero de tipo long. El valor del número supera el rango de un tipo int |
Literales Java de tipo entero expresados en binario
Los literales expresados en binario están formados por uno o más dígitos del 0 al 1.
Deben comenzar por 0b o 0B
Por ejemplo:
0b00100001 | literal entero de tipo int expresado en binario |
0B0010000101000101 | literal entero de tipo int expresado en binario |
0b1010000101000101L | literal entero de tipo long expresado en binario. |
Literales Java de tipo entero expresados en base octal
Los literales Java expresados en octal están formados por uno o más dígitos del 0 al 7.
El primer dígito debe ser cero.
Por ejemplo:
01234 | literal entero de tipo int expresado en octal |
025 | literal entero de tipo int expresado en octal |
0345L | literal entero de tipo long expresado en octal. |
Literales Java de tipo entero expresados en base hexadecimal
Están formados por 1 o más dígitos del 0 al 9 y letras de la A a la F (mayúsculas o minúsculas).
Deben comenzar por 0x o 0X.
Por ejemplo:
0X1A2 | literal entero de tipo int expresado en hexadecimal |
0x23F5 | literal entero de tipo int expresado en hexadecimal |
0XaBcd | literal entero de tipo int expresado en hexadecimal |
0X12ADL | literal entero de tipo long expresado en hexadecimal |
Literales Java de tipo real
Son valores numéricos que deben llevar un parte entera, un punto decimal y una parte fraccionaria. Si la parte entera es cero, puede omitirse pero el punto decimal debe aparecer.
El tipo de estos literales es siempre double, a no ser que se añada el sufijo F o f para indicar que el literal es de tipo float.
Los literales de tipo real solamente se pueden expresar en base decimal.
El signo + al principio es opcional y el signo – será obligatorio si el número es negativo.
Por ejemplo:
12.2303 | literal de tipo double |
-3.44 | literal de tipo double |
+10.33 | literal de tipo double |
0.456 | literal de tipo double |
.96 | literal de tipo double. Si la parte entera es 0 se puede omitir. |
2.15F | literal de tipo float. Lo indica la F final. La letra efe puede ser mayúscula o minúscula. |
Los literales en Java de tipo real también pueden representarse utilizando la notación científica.
Para expresar un literal Java en notación científica se utiliza una E (mayúscula o minúscula) seguida del exponente (positivo o negativo). El exponente está formado por dígitos del 0 al 9 y debe ser un valor entero.
Por ejemplo, el número 14 * 10-3 en notación científica se escribe 14E-3
Más ejemplos de literales de tipo real expresados en notación científica:
2.15E2 | Literal de tipo double. Representa el valor 2.15 * 102 |
2.15E+2 | Literal de tipo double. Representa el valor 2.15 * 102 El signo + en el exponente es opcional. |
.0007E4 | Literal de tipo double. Representa el valor 0.0007 * 104 |
-50.445e-10 | Literal de tipo double. Representa el valor -50.445 * 10-10 |
+74.336E-2F | Literal de tipo float. Representa el valor 74.336 * 10-2 |
También de forma opcional se pueden utilizar los sufijos d ó D para indicar que el literal es de tipo double:
12.002D | Literal de tipo double. La D final es opcional ya que por defecto los literales reales son de tipo double a no ser que finalicen con la letra efe. |
Uso del carácter separador _ en literales Java
Los literales de tipo entero escritos en cualquier base y los literales de tipo real, pueden contener el carácter _ para facilitar la lectura del número.
Por ejemplo:
2_014_120 | 1234_5678_9012L | 999_99_9999L |
0xFF_EC_DE_5E | 0xCAFE_BABE | 0xffff_ffffL |
0B1101_1001_1001 | 28_000 | 03_423_210 |
3.14_15F | 0b0010_0101 | .234_299 |
En general este carácter separador solo puede aparecer entre dígitos. En concreto no puede aparecer en los siguientes lugares:
- Al principio o final de un número.
- Junto a un punto decimal en un número de tipo real.
- Antes de los sufijos F ó L.
- Entre el 0X hexadecimal o el 0B binario
Ejemplos de literales válidos y no válidos que contienen el carácter separador _
3_.1415F | Literal no válido. El separador debe ir entre dígitos. |
| Literal no válido. El separador debe ir entre dígitos. |
999_99_9999_L | Literal no válido. El separador debe ir entre dígitos. |
_52 | Literal no válido. El separador no puede aparecer al principio del número. |
5_2 | Literal válido. |
52_ | Literal no válido. El separador no puede aparecer al final del número. |
5_______2 | Literal válido. |
0_x52 | Literal no válido. El separador no puede aparecer entre los caracteres 0 y X. |
0x_52 | Literal no válido. El separador debe ir entre dígitos. |
0x5_2 | Literal válido. |
0x52_ | Literal no válido. El separador no puede aparecer al final del número. |
0_52 | Literal válido. |
05_2 | Literal válido. |
052_ | Literal no válido. El separador no puede aparecer al final del número. |
Literales Java de tipo carácter
Los literales Java de tipo carácter contienen un solo carácter encerrado entre comillas simples.
Son de tipo char.
Las secuencias de escape, aunque contienen más de un carácter, se consideran literales de tipo carácter.
Ejemplos de literales de tipo carácter:
'a' '4' '\n' '\u0061'
Literales Java de tipo String
Están formados por 0 ó más caracteres encerrados entre comillas dobles.
Pueden incluir secuencias de escape.
Ejemplos de literales en Java de tipo String:
"Esto es una cadena de caracteres"
"Pulsa \"C\" para continuar"
"" Representa una cadena de caracteres vacía
"T" Cadena de un solo carácter.
Las cadenas de caracteres en Java son objetos de tipo String. Se estudian a fondo en el tema Strings.
