The difference between static and non-static Java constructors is that the former is called before the object has been created whereas the latter is called after. Static constructors are used to initialize class members and perform other tasks that need to be completed before an object can be created. Non-static constructors are used to initialize instance variables and perform other tasks that need to be completed after an object has been created.