A wrapper class is an object that holds a single primitive value. Java provides one wrapper for each primitive type:
intmaps toIntegerdoublemaps toDoublecharmaps toCharacterbooleanmaps toBoolean
Other primitives like long, float, and byte follow the same pattern: Long, Float, Byte.
ArrayList and other collections only accept objects, not primitives. That is why you write ArrayList<Integer> instead of ArrayList<int>. The wrapper gives the primitive an object shell so it can live inside a collection.
Each wrapper also provides utility methods. Integer.parseInt("42") converts a String to an int. Double.parseDouble("3.14") does the same for double.