After coming across this question in several interviews, came up with a small piece of code to compare primitive type and wrapper object.  Auto boxing after Java 5 has shadowed the behind seen happenings to fellow developers. :-)
              
Output: 
  
 
There will be n number of pages in google to give the differences, I am just giving a small program to compare the performance of int and Integer.
import java.util.Date;
/**
 * PerformanceTester.java
 * 
 * @author cananth
 */
public class PerformanceTester {
   public void processWithWrapper()
{
      long startTime = new Date().getTime();
      Integer
ctr = 0;
      for (int i = 0; i <
Integer.MAX_VALUE; i++) {
         ctr
+= i;
      }
      long endtime = new Date().getTime();
      System.out.println("---------------------------------------------------");
      System.out.println("Time using Integer: " + (endtime - startTime) + " ms");
      System.out.println("---------------------------------------------------");
   }
   public void
processWithPrimitive() {
       long startTime = new Date().getTime();
       int i = 0;
       int ctr = 0;
       for (i = 0; i <
Integer.MAX_VALUE; i++) {
           ctr
+= i;
       }
       long endtime = new Date().getTime();
       System.out.println("Time using int: " + (endtime - startTime) + " ms");
       System.out.println("---------------------------------------------------");
   }
   public static void main(String[] args)
{
       System.out.println("Same
Object");
       System.out.println("---------------------------------------------------");
       PerformanceTester
test = new PerformanceTester();
       test.processWithWrapper();
       test.processWithPrimitive();
       test.processWithWrapper();
       test.processWithPrimitive();
       System.out.println();
       System.out.println("New
Object");
       System.out.println("---------------------------------------------------");
       new
PerformanceTester().processWithWrapper();
       new
PerformanceTester().processWithPrimitive();
       new
PerformanceTester().processWithWrapper();
       new
PerformanceTester().processWithPrimitive();
   }
}
Same Object
---------------------------------------------------
Time using Integer: 7835 ms
---------------------------------------------------
Time using int: 1505 ms
---------------------------------------------------
Time using Integer: 7685 ms
---------------------------------------------------
Time using int: 1489 ms
---------------------------------------------------
New Object
---------------------------------------------------
Time using Integer: 7369 ms
---------------------------------------------------
Time using int: 1 ms
---------------------------------------------------
Time using Integer: 7356 ms
---------------------------------------------------
Time using int: 1 ms
---------------------------------------------------
The difference in execution is huge.  In few of my trials I have got 0ms too for the int.
Verdict: Never use wrapper class for computations.
 
  
 
Great :)
ReplyDeleteAnother article about primitive and wrapper
http://www.behindjava.com/2014/06/primitive-and-wrapper-classes-in-java.html