RE:variables publicas y estaticas
No hay dferencias asi como lo mencionas ya que ambas sirver para cosas muy distintas.
En java hay 3 tipos de acceso para las variables(propiedades) de una clase
public: la puedes accesar desde cualquier clase
private: solo pueden ser accesadas por la clase a la que pertenece
protected: pueden ser accesadas solo por la clase a la que pertenecen y las clases que heredan de esta.
Las variables estaticas (static) le indican al compilador que solo va a existir una variable ara todas las instancias de una clase en toda la aplicacion. Es decir, si tu tienes 5 objetos de una clase y esa clase tiene una variable estatica x, entoneces solo existe una x para los 5 objetos. E, incluso, puedes accesar a las variables estaticas sin que existan instancias de esa clase.