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 *