Buena la explicación, aunque a riesgo de parecer quisquillos

, creo que sería bueno enfatizar que el uso de variables estaticas de tipo public es algo que no se debería usar, ya que rompe la encapsulación y acaba dando problemas en cuanto empieza a haber cuestiones de sincronización, o classloaders, etc.
No me refiero a las constantes (public final static...) si no a variables public static, para las cuales suele ser más recomendado hacer uso de un Singleton o similar, sobre el cual podemos syncronizar el acceso en caso necesario o encapsular comprobaciones, etc, etc.
Sólo lo digo por que normalmente los programadores novatos ven que es más fácil declararlo todo como public y static para no tener que preocuparse de pasar parametros o crear instancias y demás y luego acaban metiendose en líos.
Gracias en todo caso, chuidiang.