singleton: a class that can only have limited number of instances.
a class with only private constructor and static methods (let call it class A here): normally it is a utility class with no instance. but it CAN have instances; it can be used as a singleton (without lazy loading); it is a special case of singlton (without instance method).
differences:
-- singleton can have instance methods; A not.
-- client code can create instance of singleton; A not.
-- all instances of A are static.
-- client code has to call getIntance() first, before calling a singleton's intance method; client code can call A's methods directly.
personally, i dont see A commonly used. Since A only has static instance, you can refactor such instances (of A ) into static instance of existing classes, e.g., System.out.