CodeGym /Cursos /JAVA 25 SELF /Números y caracteres en Java

Números y caracteres en Java

JAVA 25 SELF
Nivel 6 , Lección 1
Disponible

1. ¿Qué tipos de números existen?

En programación trabajamos constantemente con números — desde la edad de un usuario hasta el número de estrellas en una galaxia o los céntimos en una cuenta bancaria. Pero tareas diferentes requieren distintos tipos de números: a veces solo importa almacenar enteros, otras veces fracciones muy precisas y, en ocasiones, se necesitan números «sin negativos».

Números enteros (int y otros)

Un número entero es un número sin parte fraccionaria.
En Java se utiliza con más frecuencia el tipo int, pero además de este existen varias opciones que difieren en tamaño y rango.

  • int — el tipo «de trabajo» principal para enteros. Abarca valores muy grandes (y muy pequeños) y no consume demasiada memoria. Por ejemplo, para contar «me gusta», edades o el número de días del año casi siempre se usará int.
  • long — se utiliza si los valores pueden ser muy grandes (por ejemplo, miles de millones o billones). Ejemplo: almacenar el total de visualizaciones de YouTube de toda la historia.
  • short — tipo ahorrador, pero poco usado. Adecuado donde hay muchos valores pequeños repetidos (por ejemplo, datos de audio, componentes de color).
  • byte — para valores aún más pequeños, especialmente en gráficos y trabajo con archivos, donde la economía de memoria es importante.

Números con parte decimal (double, float)

A veces necesitas trabajar con números que tienen parte fraccionaria. Por ejemplo, la temperatura del aire, la nota media de un estudiante o el precio de un producto con céntimos.

  • double — el tipo «por defecto» para almacenar números con parte decimal. Suficientemente preciso para la mayoría de los cálculos (ejemplo: 3.1415926535…).
  • float — un tipo más ligero y menos preciso, frecuente en tareas de gráficos por ordenador o en el procesamiento de grandes conjuntos de datos, donde importa ahorrar memoria.

Tipos numéricos especiales

  • BigInteger — cuando necesitas trabajar con números enormes que superan los rangos estándar, por ejemplo, en criptografía o cálculos astronómicos.
  • BigDecimal — clase para cálculos precisos con fracciones (finanzas, cálculo de porcentajes), ayuda a evitar las imprecisiones propias de double y float.

2. Rangos de valores

Los tipos enteros pueden almacenar tanto números positivos como negativos. Esto es útil cuando los valores pueden estar «por encima y por debajo de cero»: por ejemplo, temperatura, saldo de una cuenta, altura respecto al nivel del mar.

Ejemplo:

  • int : -10, 0, 50
  • long : 0, 10, -1000_000_000_000_000_000L

Tipos enteros

Tipo Tamaño Rango de valores Ejemplo de uso
byte
1 byte de -128 a 127 -128, 0, 127
short
2 bytes de -32 768 a 32 767 -1000, 0, 32000
int
4 bytes de -2 147 483 648 a 2 147 483 647 -1000000, 0, 2000000
long
8 bytes -9 223 372 036 854 775 808
a 9 223 372 036 854 775 807
-10_000_000_000, 1

Tipos de coma flotante

Tipo Tamaño Ejemplos de valores Descripción
float
4 bytes 3.14f, -0.001f precisión simple (7 dígitos)
double
8 bytes 3.1415, -1.7E+308 doble precisión (15–16 dígitos)

3. Sufijos para números

En algunas situaciones necesitas indicar explícitamente qué tipo quieres usar para un número. Esto se hace mediante sufijos:

  • L o l — para el tipo long (por ejemplo, 10000000000L)
  • F o f — para el tipo float (por ejemplo, 3.14f)
  • D o d — para el tipo double (normalmente no hace falta, porque los números con parte decimal sin sufijo son double)

Si no se indica un sufijo, por defecto un entero se considera int y un número con parte decimal — double. Por ejemplo, 42 es int, y 3.14 es double.

¿Para qué sirve? Por ejemplo, para no obtener un error al asignar un número grande a una variable de tipo long:

long bigNumber = 9000000000L; // si quitas la L, habrá un error de compilación

Separador mediante guion bajo _

Cuando los números son largos, es fácil perderse con los ceros. Por estética y para facilitar la lectura, en Java puedes usar guiones bajos dentro del número.

int population = 146_700_000;
long stars = 100_000_000_000L;
Uso de guiones bajos para facilitar la lectura de números

Es totalmente válido: el compilador ignora los guiones bajos y a ti te resulta cómodo ver «a ojo» los grupos de dígitos. Lo principal — no poner el guion bajo al inicio, al final, después del punto o antes del sufijo.

4. Tipo de carácter char: ¿qué es y para qué sirve?

El tipo char se usa para almacenar un solo carácter: una letra, un dígito, un signo de puntuación, un espacio, un carácter especial e incluso un emoji.

Ejemplos:

char letter = 'A';
char digit = '7';
char symbol = '?';
char cyrillic = '\u0416';
char euro = '€';
char smile = '☺'; // ¡Sí, eso también se puede!

Reglas importantes:

  • El valor de tipo char se escribe entre comillas simples: 'A', '7', '#'.
  • ¡Es exactamente un carácter! Si escribes 'AB', el compilador se quejará.
  • Detrás de cada carácter hay un código numérico (Unicode).

Unicode: caracteres de todo el mundo

Java utiliza el estándar Unicode, lo que permite almacenar no solo letras latinas, sino también caracteres cirílicos, ideogramas, emojis e incluso jeroglíficos egipcios antiguos (si alguna vez hiciera falta).

Dato curioso:
El tipo char es, en esencia, un número de 16 bits (de 0 a 65535), donde a cada valor le corresponde su carácter.

5. Símbolos y números: la relación a través de Unicode

Dado que cada carácter por dentro es un número, podemos convertir sin problema un char a int y viceversa.

Ejemplo: obtener el código Unicode de un carácter

public class CharToInt {
    public static void main(String[] args) {
        char ch = 'A';
        int code = ch; // Conversión implícita de char → int

        System.out.println("Código del carácter '" + ch + "': " + code);
    }
}

Resultado:

Código del carácter 'A': 65

Y ahora al revés: obtener el carácter a partir del código:

public class IntToChar {
    public static void main(String[] args) {
        int code = 1040; // Código de la letra U+0410 en Unicode (cirílico)
        char ch = (char) code; // Conversión explícita de int → char

        System.out.println("Carácter con el código " + code + ": " + ch);
    }
}

Resultado:

Carácter con el código 1040: \u0410

6. Tipos primitivos básicos de Java

Tipo Tamaño (bits) Rango de valores Ejemplo de valor Nota
byte
8 -128 ... 127 42 Se utiliza muy raramente
short
16 -32,768 ... 32,767 12345 Para ahorrar memoria
int
32 -2,147,483,648 ... 2,147,483,647 1000000 Principal para enteros
long
64 ≈ −9.22 × 1018 ... ≈ 9.22 × 1018 5000000000L Para enteros muy grandes
float
32 ~±3.4 × 10-38 ... ±3.4 × 1038 3.14f Números decimales, baja precisión
double
64 ~±1.7 × 10-308 ... ±1.7 × 10308 2.718 Números decimales, alta precisión
char
16 0 ... 65 535 (Unicode) '\u0416', 'A', '?' Un solo carácter
boolean
1 true, false true Valor lógico
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION