Java is not purely object-oriented as it uses primitive data types like int and double that are not objects. Wrapper classes like Integer and Double allow primitive types to be used as objects. Wrapper classes wrap a primitive type and provide object-oriented functionality like methods. Wrapper classes are used when primitive types need to be added to collections or converted between primitive and object types.