title: When to use static method and field?
body: <p>I know what static is, but just not sure when to use it.</p>
  
  <p>static variable:
  I only used it for constant fields. Sometimes there are tens of constants in a class, so using static constants can save lots of memory. Is there any other typical use cases?  </p>
  
  <p>static method:
  I use it when I make a class about algorithms. For example, a class which provides different sorting algorithms. Is it against OOP design? I think it is better to maintain this way rather than implementing sorting algorithms inside each class that needs to use them. Am I wrong? What are some good use cases?</p>
  
  <p>Also, are there any performance difference between using static and non-static fields/methods?</p>