Short answer: An int
is a number; an Integer
is a pointer that can reference an object that contains a number. Using Integer
for arithmetic involves more CPU cycles and consumes more memory. An int
is not an object and cannot passed to any method that requires objects (just like what you said about Generics).