Integer.valueOf() vs Integer.parseInt() con ejemplos

Entero.parseInt() :

Mientras operamos con strings, hay momentos en los que necesitamos convertir un número representado como una string en un tipo entero. El método generalmente utilizado para convertir String a Integer en Java es parseInt() . Este método pertenece a la clase Integer en el paquete java.lang. Toma una string válida como parámetro y la analiza en un tipo de datos primitivo int. Solo acepta String como parámetro y al pasar valores de cualquier otro tipo de datos, produce un error debido a tipos incompatibles.

Existen dos variantes de este método:

Sintaxis:

public static int parseInt(String s) throws NumberFormatException
public static int parseInt(String s, int radix) throws NumberFormatException

Ejemplo:

// Java program to demonstrate working parseInt()
  
public class GFG {
    public static void main(String args[])
    {
        int decimalExample = Integer.parseInt("20");
        int signedPositiveExample = Integer.parseInt("+20");
        int signedNegativeExample = Integer.parseInt("-20");
        int radixExample = Integer.parseInt("20", 16);
        int stringExample = Integer.parseInt("geeks", 29);
  
        System.out.println(decimalExample);
        System.out.println(signedPositiveExample);
        System.out.println(signedNegativeExample);
        System.out.println(radixExample);
        System.out.println(stringExample);
    }
}
Producción:

20
20
-20
32
11670324

Entero.valueOf() :

Este método es un método estático que pertenece al paquete java.lang que devuelve el objeto entero relevante que contiene el valor del argumento pasado. Este método puede tomar un número entero o una string como parámetro. Pero cuando la string dada no es válida, proporciona un error. Este método también puede tomar un carácter como parámetro, pero la salida será su valor Unicode correspondiente. Este método siempre almacenará en caché valores en el rango de -128 a 127, inclusive, y puede almacenar en caché otros valores fuera de este rango.

Sintaxis:

public static Integer valueOf(int a)
public static Integer valueOf(String str)
public static Integer valueOf(String str, int base)

Ejemplo:

// Java program to illustrate the
// java.lang.Integer.valueOf(int a)
import java.lang.*;
  
public class Geeks {
  
    public static void main(String[] args)
    {
  
        Integer obj = new Integer(10);
  
        // Returns an Integer instance
        // representing the specified int value
        System.out.println("Output Value = "
                           + obj.valueOf(85));
    }
}
Producción:

Output Value = 85

Diferencias entre Integer.parseInt() e Integer.valueOf()

  1. Integer.valueOf() devuelve un objeto Integer mientras que Integer.parseInt() devuelve un int primitivo.

    // Program to show the use
    // of Integer.parseInt() method
      
    class Test1 {
        public static void main(String args[])
        {
            String s = "77";
      
            // Primitive int is returned
            int str = Integer.parseInt(s);
            System.out.print(str);
      
            // Integer object is returned
            int str1 = Integer.valueOf(s);
            System.out.print(str1);
        }
    }
    Producción:

    7777
    
  2. Tanto String como integer pueden pasarse como parámetro a Integer.valueOf() mientras que solo String puede pasarse como parámetro a Integer.parseInt().

    // Program to show that Integer.parseInt()
    // cannot take integer as parameter
      
    class Test3 {
        public static void main(String args[])
        {
            int val = 99;
      
            try {
      
                // It can take int as a parameter
                int str1 = Integer.valueOf(val);
                System.out.print(str1);
      
                // It cannot take an int as a parameter
                // Hence will throw an exception
                int str = Integer.parseInt(val);
                System.out.print(str);
            }
            catch (Exception e) {
                System.out.print(e);
            }
        }
    }

    Error de compilación:

    prog.java:18: error: incompatible types:
    int cannot be converted to String
                int str = Integer.parseInt(val);
                                           ^
    1 error
    
  3. Integer.valueOf() puede tomar un carácter como parámetro y devolverá su valor Unicode correspondiente, mientras que Integer.parseInt() producirá un error al pasar un carácter como parámetro.

    // Program to test the method
    // when a character is passed as a parameter
      
    class Test3 {
        public static void main(String args[])
        {
            char val = 'A';
      
            try {
      
                // It can take char as a parameter
                int str1 = Integer.valueOf(val);
                System.out.print(str1);
      
                // It cannot take char as a parameter
                // Hence will throw an exception
                int str = Integer.parseInt(val);
                System.out.print(str);
            }
            catch (Exception e) {
                System.out.print(e);
            }
        }
    }

    Error de compilación:

    prog.java:18: error: incompatible types:
    char cannot be converted to String
                int str = Integer.parseInt(val);
                                           ^
    1 error
    
    

tabla de diferencia

Entero.parseInt() Entero.valorDe()
Solo puede tomar un String como parámetro. Puede tomar una string así como un número entero como parámetro.
Devuelve un valor int primitivo. Devuelve un objeto Integer.
Cuando se pasa un número entero como parámetro, produce un error debido a tipos incompatibles Cuando se pasa un entero como parámetro, devuelve un objeto Integer correspondiente al parámetro dado.
Este método produce un error (tipos incompatibles) cuando se pasa un carácter como parámetro. Este método puede tomar un carácter como parámetro y devolverá el Unicode correspondiente.
Esto va a la zaga en términos de rendimiento, ya que analizar una string lleva mucho tiempo en comparación con generar una. Es probable que este método produzca un rendimiento de espacio y tiempo significativamente mejor al almacenar en caché los valores solicitados con frecuencia.
Si necesitamos el tipo de datos int primitivo, se utilizará el método Integer.parseInt(). Si se necesita el objeto Wrapper Integer, se utilizará el método valueOf().

Publicación traducida automáticamente

Artículo escrito por deepthisenthil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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