Autoboxing and Unboxing
Sometimes, we need to deal with primitive types in methods that only accept objects. A good example of this is when we want to store integers in an ArrayList (which we will discuss later). This class, ArrayList, only accepts objects, and not primitives. Fortunately, Java provides all primitive types as classes. Wrapper classes can hold primitive values and we can manipulate them as if they were normal classes.
An example of the Integer class, which can hold an int is as follows:
Integer a = new Integer(1);
We can also skip the new keyword and the compiler will implicitly wrap it for us:
Integer a = 1;
We can then use the object as if it was any other object. We can upcast it to Object and then downcast it back to an Integer.
This operation of converting a primitive type into an object (reference type) is referred to as autoboxing.
We can also convert the object back into a primitive type:
Integer a = 1; int b = a;
Here, the b primitive is assigned the value of a, which is...