When I look at the javadocs of Class.java it says:
/*The primitive Java types ({@code boolean},
* {@code byte}, {@code char}, {@code short},
* {@code int}, {@code long}, {@code float}, and
* {@code double}), and the keyword {@code void} are also
* represented as {@code Class} objects.
*/
I had always heard that primitive types in Java are not classes/objects hence Java isn't purely Object Oriented. But the above JavaDoc confuses me.
Don't get confused by the term "represented" and mess up "type" and "value". The representations are created by the Java Virtual Machine, they are not instantiated for every primitive value (this would be autoboxing, though some instances are cached):
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isPrimitive%28%29