Static methods can be used when no object needs to be created. For example, the methods of the Math class are all static. I don't need a Math object to find the cosine of pi/4, i just need to pass it the value.
a Non-static method is used when the state of an object is important. If I have a Dog class, it may have a setName() method. You can't setName if there is no Dog created. Even if there were thousands of Dog objects, you need to call setName() on a SPECIFIC dog.
So, you'd make it a non-static method of the class. The you can only call it when you have a Dog object created:
Dog myDog = new Dog();
note: corrected mistake Campbell kindly pointed out
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
I would suggest: default to instance (not static) methods until proven otherwise.
Consider a static method when you want it to access, read, display or use nothing from the object, and you want to write alter or record nothing in the object. Consider a static method if you need to call it before any objects exist. If you are overriding or want to override or are implementing an interface, then your method must not be static.