Saltar a contenido

1.3 Tipos de datos

Java es de tipado estático: cada variable tiene un tipo fijo que se comprueba al compilar.

Tipos primitivos

Tipo Tamaño Ejemplo
byte 8 bits byte b = 10;
short 16 bits short s = 1000;
int 32 bits int i = 42;
long 64 bits long l = 10_000_000_000L;
float 32 bits float f = 3.14f;
double 64 bits double d = 3.14;
char 16 bits char c = 'A';
boolean — boolean ok = true;

Tipos de referencia

String, arrays, clases y colecciones. Su valor por defecto es null.

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Colecciones {
    public static void main(String[] args) {
        String s = "Java";
        System.out.println(s.length());       // 4
        System.out.println(s.toUpperCase());  // JAVA

        int[] numeros = {3, 1, 2};            // array de tamaño fijo
        List<Integer> lista = new ArrayList<>();
        lista.add(3);
        lista.add(1);
        Map<String, Integer> mapa = new HashMap<>();
        mapa.put("a", 1);

        System.out.println(numeros.length + " " + lista + " " + mapa.get("a"));
    }
}

Conversiones

public class Conversiones {
    public static void main(String[] args) {
        // Implícita (ensanchamiento): de menor a mayor rango
        int i = 5;
        double d = i;                 // 5.0

        // Explícita (casting): puede perder información
        double pi = 3.99;
        int entero = (int) pi;        // 3 (trunca)

        // Texto <-> número
        int n = Integer.parseInt("42");
        double x = Double.parseDouble("3.5");
        String t = String.valueOf(42);

        System.out.println(d + " " + entero + " " + n + " " + x + " " + t);
    }
}

NumberFormatException

Integer.parseInt("abc") lanza una excepción. Hay que controlarla con try/catch cuando el dato viene del usuario.

Wrappers

Cada primitivo tiene una clase asociada (int → Integer, double → Double) necesaria, por ejemplo, para las colecciones genéricas. El paso entre ambos es automático (autoboxing).