Java es un lenguaje fuertemente tipado: cada variable tiene un tipo declarado en tiempo de compilación. Conocer bien los tipos primitivos y la clase String es fundamental para escribir código correcto y eficiente.
Tipos primitivos
Java tiene ocho tipos primitivos que almacenan el valor directamente (no son objetos):
|
Tipo | Tamaño | Rango | Uso típico |
| 8 bits | -128 a 127 | Datos binarios, protocolos |
| 16 bits | -32768 a 32767 | Poco común |
| 32 bits | ±2.1 mil millones | Enteros en general |
| 64 bits | ±9.2 × 10¹⁸ | Timestamps, IDs grandes |
| 32 bits IEEE 754 | ~6-7 dígitos significativos | Raramente (prefiere double) |
| 64 bits IEEE 754 | ~15-16 dígitos significativos | Cálculos en coma flotante |
| 16 bits Unicode | ' ' a '' | Caracteres individuales |
| JVM-dependiente |
| Condiciones |
Para dinero y valores exactos, nunca uses float ni double. Usa java.math.BigDecimal.
Autoboxing y clases envoltorio (Wrapper)
Cada primitivo tiene una clase envoltorio (Integer, Long, Double, Boolean…). Java convierte automáticamente entre ambos (autoboxing/unboxing):
int primitivo = 42; Integer objeto = primitivo; // autoboxing int deVuelta = objeto; // unboxing Listlista = new ArrayList<>(); lista.add(10); // autoboxing automático int valor = lista.get(0); // unboxing automático
Cuidado: el unboxing de un null lanza NullPointerException.
String: inmutable y eficiente
String en Java es inmutable: una vez creado, no se puede modificar. Cada operación que parece modificar un String en realidad crea uno nuevo:
String s = "Hola"; s = s + " Mundo"; // crea un nuevo String; el "Hola" original se descarta
Los métodos de String más usados:
String texto = " Java 21 es genial ";
texto.length() // 21
texto.trim() // "Java 21 es genial"
texto.toUpperCase() // " JAVA 21 ES GENIAL "
texto.toLowerCase() // " java 21 es genial "
texto.contains("21") // true
texto.startsWith(" Java") // true
texto.replace("genial", "potente")// " Java 21 es potente "
texto.split(" ") // array de palabras
texto.charAt(2) // 'J'
texto.substring(2, 6) // "Java"
texto.strip() // "Java 21 es genial" (mejor que trim() con Unicode)
String.valueOf(42) // "42" (convierte primitivo a String)
Integer.parseInt("42") // 42 (String a int)
Text Blocks (Java 15+)
Los text blocks permiten escribir cadenas multilínea de forma legible, sin escapes:
String json = """
{
"nombre": "Juan",
"edad": 30,
"ciudad": "Madrid"
}
""";
String html = """
Hola, %s
""".formatted("Java 21");
StringBuilder: concatenar eficientemente
Cuando concatenas muchos Strings en un bucle, usa StringBuilder en lugar del operador +. Cada + crea un objeto nuevo; StringBuilder modifica el buffer internamente:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("elemento").append(i).append(", ");
}
String resultado = sb.toString();
var: inferencia de tipos (Java 10+)
La palabra clave var permite al compilador inferir el tipo de una variable local. Solo funciona en variables locales con inicializador:
var nombre = "Java"; // String var lista = new ArrayList(); // ArrayList var numero = 42; // int // NO funciona como atributo de clase, parámetro o tipo de retorno
