¿Qué es?
Son los bloques fundamentales del lenguaje que permiten almacenar, manipular y operar información dentro de un programa.
- Variables → Espacios de memoria con nombre
- Tipos de datos → Definen qué tipo de valor almacena la variable
- Operadores → Permiten realizar cálculos y comparaciones
Java define:
- Tipos primitivos (stack, rápidos, bajo nivel)
- Tipos de referencia (heap, objetos, más flexibles)
👉 Elegir mal el tipo impacta directamente en performance, precisión y bugs en producción
👉 Sin esto, no puedes construir lógica en ningún sistema
¿Para qué sirve?
En proyectos reales:
- Manejar datos de usuarios (nombre, saldo, edad)
- Procesar operaciones (pagos, cálculos, validaciones)
- Tomar decisiones en el sistema
En sistemas reales:
- Finanzas → precisión decimal
- IoT → uso eficiente de memoria (byte, short)
- Backend → validaciones, cálculos, lógica de negocio
- Big Data → optimización de memoria
Conceptos clave
🔹 Tipos primitivos completos
| Tipo | Tamaño | Rango |
|---|---|---|
| byte | 1 byte | -128 a 127 |
| short | 2 bytes | -32,768 a 32,767 |
| int | 4 bytes | -2^31 a 2^31 – 1 |
| long | 8 bytes | -2^63 a 2^63 – 1 |
| float | 4 bytes | ±1.4E-45 a ±3.4E38 (~7 dígitos) |
| double | 8 bytes | ±4.9E-324 a ±1.7E308 (~15 dígitos) |
| char | 2 bytes | 0 a 65,535 (Unicode) |
| boolean | JVM | true / false |
🔹 Tipos de referencia
String- Arrays (
int[],String[]) - Clases (
Usuario,Cuenta) - Wrappers (
Integer,Double, etc.)
Reglas importantes
- Usa
intpor defecto para enteros - Usa
longpara grandes volúmenes (IDs, timestamps) - Usa
doublepara cálculos generales - ⚠️ NO usar float/double para dinero
- Para dinero → usar
BigDecimal
Manejo de decimales con precisión (CRÍTICO)
Problema típico:
System.out.println(0.1 + 0.2);Salida:
0.30000000000000004
👉 Esto ocurre por representación binaria
✅ Solución profesional: BigDecimal
import java.math.BigDecimal;
public class PrecisionDemo {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal resultado = a.add(b);
System.out.println(resultado); // 0.3 exacto
}
}Operadores
🔹 Aritméticos
+ - * / %
🔹 Relacionales
== != > < >= <=
🔹 Lógicos
&& || !
🔹 Asignación
= += -= *= /=
Errores comunes
- ❌ Usar tipos incorrectos (ej:
intpara dinero) - ❌ No inicializar variables
- ❌ Comparar Strings con
==(ERROR común) - ❌ Desbordamiento de datos (
intmuy pequeño) - ❌ No entender diferencia entre primitivo y objeto
- ❌ Usar
float/doublepara dinero - ❌ No usar sufijo
Lenlong
long numero = 10000000000; // ERROR
long numero = 10000000000L; // OK- ❌ Comparar objetos con
== - ❌ Desbordamiento silencioso
int max = Integer.MAX_VALUE;
max++; // overflowEjemplo de código completo
import java.math.BigDecimal;
public class TiposDatosDemo {
public static void main(String[] args) {
// Tipos Primitivos
byte edad = 30;
short anio = 2025;
int poblacion = 1000000;
long distancia = 15000000000L;
float precioFloat = 10.5f;
double precioDouble = 10.5;
char letra = 'A';
boolean activo = true;
String nombre = "Roger";
// BigDecimal para dinero
BigDecimal precio = new BigDecimal("99.99");
BigDecimal impuesto = new BigDecimal("0.18");
BigDecimal total = precio.add(precio.multiply(impuesto));
System.out.println("Total: " + total);
}
}Ejemplo de vida real
Caso: Sistema de pagos (nivel banco)
BigDecimal saldo = new BigDecimal("1000.00");
BigDecimal compra = new BigDecimal("250.75");
if (saldo.compareTo(compra) >= 0) {
saldo = saldo.subtract(compra);
}👉 Esto evita errores de precisión en:
- Transferencias
- Cálculo de intereses
- Facturación electrónica
Diagrama conceptual
MEMORIA[ STACK ]
├── byte
├── int
├── double
└── boolean
[ HEAP ]
├── String
├── Arrays
├── Objetos
└── BigDecimal
FLUJO:
Variable → Tipo → Memoria → Operación → Resultado

Uso en proyectos reales
Backend (Spring Boot):
public BigDecimal calcularTotal(BigDecimal precio, BigDecimal impuesto) {
return precio.add(precio.multiply(impuesto));
}DTO:
public class PagoDTO {
private BigDecimal monto;
}👉 En sistemas reales:
- Nunca verás dinero en
double - Siempre usarás
BigDecimal
Conclusión
Dominar tipos de datos no es básico, es crítico.
Variables y operadores son la base de toda lógica.
Debes tener claro:
- Qué tipo usar según contexto
- Cuándo usar
BigDecimal - Impacto en memoria y precisión
- Buenas prácticas de nomenclatura
- Diferencia entre primitivo vs referencia
👉 Esto impacta directamente en bugs, rendimiento y claridad del código.
Deja una respuesta