The Java data types can be divided into a set of primitive types and a reference type. Variable of primitive types hold primitive values and variables of the reference type hold reference values. Reference values refer to objects, but are not objects themselves. Primitive values, by contrast do not refer anything. They are actual data themselves.