Java es un lenguaje fuertemente tipado, lo que significa que cada variable debe tener un tipo definido. Los tipos primitivos son los bloques de construcción básicos del lenguaje. En este artículo aprenderás sobre ellos y cómo convertir entre diferentes tipos.
1. Tipos primitivos en Java
Java tiene ocho tipos primitivos, divididos en tres categorías: numéricos, caracteres y booleanos.
Tipo | Tamaño | Rango | Ejemplo de uso |
---|---|---|---|
byte | 8 bits | -128 a 127 | Almacenar datos pequeños. |
short | 16 bits | -32,768 a 32,767 | Datos enteros pequeños. |
int | 32 bits | -2,147,483,648 a 2,147,483,647 | Valores enteros estándar. |
long | 64 bits | -2⁶³ a 2⁶³-1 | Enteros grandes. |
float | 32 bits | ±3.40282347E+38 (6-7 decimales) | Números decimales pequeños. |
double | 64 bits | ±1.79769313486231570E+308 (15 decimales) | Números decimales grandes. |
char | 16 bits | Unicode (0 a 65,535) | Un solo carácter. |
boolean | 1 bit | true o false | Lógica booleana. |
Ejemplo práctico:
public class TiposPrimitivos { public static void main(String[] args) { int entero = 100; double decimal = 3.14; char letra = 'A'; boolean logico = true; System.out.println("Entero: " + entero); System.out.println("Decimal: " + decimal); System.out.println("Letra: " + letra); System.out.println("Lógico: " + logico); } }
Salida:
Entero: 100 Decimal: 3.14 Letra: A Lógico: true
2. Inicialización y valores por defecto
Cuando se declaran variables primitivas sin inicializarlas, estas toman valores por defecto en las clases (pero no en métodos locales).
Tipo | Valor por defecto |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘\u0000’ (vacío) |
boolean | false |
Ejemplo:
public class ValoresPorDefecto { static int entero; static double decimal; static char caracter; static boolean logico; public static void main(String[] args) { System.out.println("Entero por defecto: " + entero); // 0 System.out.println("Decimal por defecto: " + decimal); // 0.0 System.out.println("Carácter por defecto: " + caracter); // vacío System.out.println("Booleano por defecto: " + logico); // false } }
3. Conversión de tipos en Java
En Java, las conversiones entre tipos pueden ser implícitas o explícitas.
3.1 Conversión implícita
Java permite convertir automáticamente un tipo más pequeño a uno más grande sin pérdida de precisión.
Tipo origen | Tipo destino |
---|---|
byte | short , int , long , float , double |
int | long , float , double |
float | double |
Ejemplo:
public class ConversionImplicita { public static void main(String[] args) { int entero = 100; double decimal = entero; // Conversión implícita System.out.println("Entero: " + entero); System.out.println("Decimal: " + decimal); } }
Salida:
Entero: 100 Decimal: 100.0
3.2 Conversión explícita (casting)
Para convertir un tipo más grande a uno más pequeño, necesitas hacer un «casting». Esto puede resultar en pérdida de precisión.
Sintaxis:
tipoDestino variable = (tipoDestino) valor;
Ejemplo práctico:
public class ConversionExplicita { public static void main(String[] args) { double decimal = 9.99; int entero = (int) decimal; // Conversión explícita System.out.println("Decimal original: " + decimal); System.out.println("Entero convertido: " + entero); } }
Salida:
Decimal original: 9.99 Entero convertido: 9
4. Operaciones comunes con tipos primitivos
Comparación de valores: Usa operadores como ==
, !=
, <
, >
, <=
, >=
.
Operaciones aritméticas: Operadores como +
, -
, *
, /
, %
.
Conversión de caracteres: Los caracteres se pueden tratar como números en base a su valor Unicode.
char letra = 'A'; int valor = letra; // Conversión implícita System.out.println(valor); // 65
5. Errores comunes al trabajar con tipos primitivos
Desbordamiento: Cuando un valor excede el rango del tipo:
byte b = 127; b += 1; // Resultado: -128 (desbordamiento)
Pérdida de precisión: Al convertir de double
a int
, se trunca el valor decimal.
Confusión entre tipos flotantes: Recuerda usar f
o d
para especificar literales de tipo float
o double
:
float numero = 3.14f; // Correcto double numeroGrande = 3.14; // Correcto
Resumen
- Java tiene 8 tipos primitivos que abarcan números, caracteres y valores booleanos.
- Las conversiones implícitas son seguras, pero las explícitas pueden causar pérdida de datos.
- Comprender los rangos y valores por defecto te ayuda a evitar errores comunes.