String a int en Java: 4 formas más un truco secreto

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿por qué esta pregunta atormenta incluso a desarrolladores Java experimentados?

Si alguna vez has buscado en Google "How do I convert a String to an int in Java?", no estás solo. Es una de las preguntas más populares en Stack Overflow con millones de visitas. Parecería sencillo: tomas la cadena, la conviertes a número y listo. Pero en la práctica, la conversión de String a int en Java esconde trampas: desde excepciones inesperadas hasta la elección entre rendimiento y legibilidad del código.

En este artículo, analizaremos todas las formas populares de convertir una cadena a número en Java, comparándolas en velocidad, seguridad y facilidad de uso. Aprenderá a evitar el clásico error NumberFormatException y obtendrá soluciones listas para proyectos reales. ¡Allá vamos!



Método n.º 1: El clásico — Integer.parseInt()

La forma más común y rápida de convertir String a int en Java es usar el método estático Integer.parseInt(). Toma una cadena y devuelve el tipo primitivo int.



public class ParseIntExample {    public static void main(String[] args) {        String number = "42";        int result = Integer.parseInt(number);        System.out.println(result); // Salida: 42    }}


Ventajas de Integer.parseInt():

  • Máximo rendimiento — no crea objetos innecesarios.
  • Simplicidad — una línea de código sin envoltorios adicionales.
  • Soporte de sistemas numéricos — se puede especificar la base (radix): Integer.parseInt("ff", 16) devuelve 255.


Desventajas y trampas:

  • Si la cadena contiene caracteres no numéricos (espacios, letras), se lanza una NumberFormatException.
  • No maneja null — se produce un NullPointerException.


// Ejemplo de error:String badInput = "42abc";int value = Integer.parseInt(badInput); // ¡NumberFormatException!


Método n.º 2: El seguro Integer.valueOf()

La segunda forma popular de convertir una cadena a número en Java es Integer.valueOf(). Externamente es similar a parseInt(), pero devuelve un objeto Integer, no un primitivo.



public class ValueOfExample {    public static void main(String[] args) {        String number = "123";        Integer result = Integer.valueOf(number);        System.out.println(result); // Salida: 123    }}


¿Cuándo usar valueOf()?

  • Si necesita un objeto Integer para colecciones (por ejemplo, List<Integer>).
  • Si trabaja con Optional o Stream API (ver más abajo).
  • Gracias al almacenamiento en caché (para números de -128 a 127), valueOf() puede ser incluso más rápido que parseInt() + autoboxing.


Un detalle importante:

Si necesita el primitivo int, es mejor usar parseInt() — es aproximadamente un 10-15% más rápido, ya que no crea un objeto envoltorio. Pero en el 99% de las aplicaciones, esta diferencia es imperceptible.



Método n.º 3: Java 8+ y Optional — manejo elegante de errores

El enfoque moderno para la conversión de String a int en Java es usar Optional. Permite evitar bloques try-catch y hacer el código más limpio.



import java.util.Optional;

public class OptionalParseExample { public static Optional<Integer> safeParseInt(String str) { try { return Optional.of(Integer.parseInt(str)); } catch (NumberFormatException e) { return Optional.empty(); } }

public static void main(String[] args) { // Parseo exitoso safeParseInt("100").ifPresent(System.out::println); // 100

Blogs

Book Recommendations