Start here. This is the direct spoken answer to practice first.
Overview
The deciding question is whether a value or operation belongs to each object, to a class-level concept, or to application-wide mutable state.
An instance member belongs to a particular object and can use that object's state. A static member belongs to the class and is shared within that class's loading context. Static constants and pure utility operations can be appropriate because they have no per-object state. Business or request state usually belongs to instances with explicit lifetimes. Mutable static state behaves like global state, which makes ownership, concurrency, tests, and cleanup harder to reason about.