Java has two categories of data types: primitive and non-primitive (reference) data types. Primitive data types include byte, short, int, long, float, double, boolean, and char. Non-primitive data types include classes, interfaces, arrays, and String.