A 'literal' is a value that actually appears in the source code; a character literal looks like 'a', a
String literal like "Hello", and a floating-point literal like 123.23 . The
word "primitive" refers to a datatype that's not an object; there are only a few primitive types in
Java (byte, char, short, int, long, float, and double.)
So the question of what's the difference isn't really a meaningful one. All floats and doubles are primitives; a literal float or double can appear in your source code.