Java convertir cadena a entero

    Introducción

    Convertir un String a una int, o su respectiva clase contenedora Integer, es una operación común y sencilla. Lo mismo ocurre al revés, convirtiendo un entero en una cadena.

    Hay varias formas de lograr esta conversión simple utilizando métodos integrados en el JDK.

    Conversión de cadena en entero

    Para convertir String en Integer o int, hay cuatro enfoques integrados. La clase contenedora Integer proporciona algunos métodos específicamente para este uso: parseInt(), valueOf() y decode(), aunque también podemos usar su constructor y pasarle un String.

    Estos tres métodos tienen diferentes tipos de devolución:

    • parseInt()– devuelve primitivo int.
    • valueOf() – devuelve una instancia nueva o en caché de Integer
    • decode() – devuelve una instancia nueva o en caché de Integer

    Dicho esto, es válido plantear una pregunta:

    “Cuál es la diferencia entre valueOf() y decode() ¿luego?

    La diferencia es que decode() también acepta otras representaciones numéricas, distintas del decimal regular: dígitos hexadecimales, dígitos octales, etc.

    Nota: Es una mejor práctica crear una instancia Integer con la ayuda del valueOf() método en lugar de confiar en el constructor. Esto es porque el valueOf() El método devolverá una copia en caché para cualquier valor entre -128 y 127 inclusive, y al hacerlo, reducirá la huella de memoria.

    Integer.parseInt ()

    los parseInt() El método se envía en dos sabores:

    • parseInt(String s) – Aceptando la cadena que nos gustaría analizar
    • parseInt(String s, int radix) – Aceptando la Cadena así como la base del sistema de numeración

    los parseInt() El método convierte la cadena de entrada en una primitiva. int y lanza un NumberFormatException si la cadena no se puede convertir:

    String string1 = "100";
    String string2 = "100";
    String string3 = "Google";
    String string4 = "20";
    
    int number1 = Integer.parseInt(string1);
    int number2 = Integer.parseInt(string2, 16); 
    int number3 = Integer.parseInt(string3, 32); 
    int number4 = Integer.parseInt(string4, 8); 
    
    System.out.println("Parsing String "" + string1 + "": " + number1);
    System.out.println("Parsing String "" + string2 + "" in base 16: " + number2);
    System.out.println("Parsing String "" + string3 + "" in base 32: " + number3);
    System.out.println("Parsing String "" + string4 + "" in base 8: " + number4);
    

    Ejecutar este fragmento de código producirá:

    Parsing String "100": 100
    Parsing String "100" in base 16: 256
    Parsing String "Google" in base 32: 562840238
    Parsing String "20" in base 8: 16
    

    Integer.valueOf ()

    los valueOf() se envía en tres sabores:

    • valueOf(String s) – Acepta una cadena y la analiza en un entero
    • valueOf(int i) – Acepta un int y lo analiza en un entero
    • valueOf(String s, int radix) – Acepta una cadena y devuelve un entero que representa el valor y luego lo analiza con la base dada

    los valueOf() método, a diferencia del parseInt() método, devuelve un Integer en lugar de un primitivo int y también lanza un NumberFormatException si la cadena no se puede convertir correctamente y solo acepta números decimales:

    int i = 10;
    String string1 = "100";
    String string2 = "100";
    String string3 = "Google";
    String string4 = "20";
    
    int number1 = Integer.valueOf(i);
    int number2 = Integer.valueOf(string1); 
    int number3 = Integer.valueOf(string3, 32); 
    int number4 = Integer.valueOf(string4, 8); 
    
    System.out.println("Parsing int " + i + ": " + number1);
    System.out.println("Parsing String "" + string1 + "": " + number2);
    System.out.println("Parsing String "" + string3 + "" in base 32: " + number3);
    System.out.println("Parsing String "" + string4 + "" in base 8: " + number4);
    

    Ejecutar este fragmento de código producirá:

    Parsing int 10: 10
    Parsing String "100": 100
    Parsing String "Google" in base 32: 562840238
    Parsing String "20" in base 8: 16
    

    Integer.decode ()

    los decode() El método acepta un solo parámetro y viene en un sabor:

    • decode(String s) – Acepta una cadena y la decodifica en un entero

    los decode() El método acepta números decimales, hexadecimales y octales, pero no admite binarios:

    String string1 = "100";
    String string2 = "50";
    String string3 = "20";
    
    int number1 = Integer.decode(string1);
    int number2 = Integer.decode(string2); 
    int number3 = Integer.decode(string3); 
    
    System.out.println("Parsing String "" + string1 + "": " + number2);
    System.out.println("Parsing String "" + string2 + "": " + number2);
    System.out.println("Parsing String "" + string3 + "": " + number3);
    

    Ejecutar este fragmento de código producirá:

    Parsing String "100": 50
    Parsing String "50": 50
    Parsing String "20": 20
    

    Conclusión

    Hemos cubierto uno de los temas fundamentales de Java y los problemas comunes que enfrentan los desarrolladores: convertir una cadena en un entero o un entero utilizando las herramientas que se incluyen con el JDK.

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *