Tipos Primitivos y Conversión de Tipos en Java

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.

TipoTamañoRangoEjemplo de uso
byte8 bits-128 a 127Almacenar datos pequeños.
short16 bits-32,768 a 32,767Datos enteros pequeños.
int32 bits-2,147,483,648 a 2,147,483,647Valores enteros estándar.
long64 bits-2⁶³ a 2⁶³-1Enteros grandes.
float32 bits±3.40282347E+38 (6-7 decimales)Números decimales pequeños.
double64 bits±1.79769313486231570E+308 (15 decimales)Números decimales grandes.
char16 bitsUnicode (0 a 65,535)Un solo carácter.
boolean1 bittrue o falseLó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).

TipoValor por defecto
byte0
short0
int0
long0L
float0.0f
double0.0d
char‘\u0000’ (vacío)
booleanfalse

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 origenTipo destino
byteshort, int, long, float, double
intlong, float, double
floatdouble

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.