Both the Integer.parseInt() and Integer.valueOf() method is used to convert a String into Integer in Java, both does the same work then why there is a need for two different method will be the question here. They both does the same job but has a slight difference among them. Lets look into the difference between parseInt vs valueOf in Java
Difference between parseInt vs valueOf in Java
The main difference between Integer.parseInt() vs Integer.valueOf() would be
- parseInt() : will be returning the primitive type int
- valueOf() : will be returning the Integer wrapper Object
After the introduction of Autoboxing and Unboxing in Java in 1.5, it will not make much of a difference but worth knowing.
The parseXXX() method and valueOf() is almost present in most of the numeric primitive datatypes wrapper class, such as Integer, Long, Double, Float, etc.
When we look into the source code of parseInt() and valueOf() in java.lang.Integer class
parseInt()
public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); }
parseInt() method simply parses the String which is passed to it and returns primitive int.
valueOf()
public static Integer valueOf(String s, int radix) throws NumberFormatException { return Integer.valueOf(parseInt(s,radix)); } public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); }
As we can see from the above code, valueOf() method passes the String to the parseInt() method which performs the actual conversion of String and returns the Wrapper Integer. Then it calls the actual valueOf() method, which maintains the pool of Integers ranging -128 to 127 and if the primitive int is within the cache range it returns the Integer from object pool and if the primitive is not within the cache range it will create a new object.
Leave a Reply