1. una variable de instancia es uno por objeto, cada objeto tiene su propia copia de variable de instancia.
Ej:
public class Test{
int x = 5;
}
Test t1 = new Test();
Test t2 = new Test();
Tanto t1
y t2
se tener su propia copia dex
.
2. Una variable estática es uno por clase, todos los objetos de esa clase comparte la misma variable estática.
Ej:
public class Test{
public static int x = 5;
}
Test t1 = new Test();
Test t2 = new Test();
Tanto t1
y t2
tendrá la exactamente una x para compartir entre ellos.
3. Una variable estática se inicializa cuando la JVM carga la clase.
4. Un static method
no puede acceso Non-static
variable o método.
5.Static methods
junto con Static variables
puede imitan un Singleton Pattern
, pero no es la manera correcta, como cuando hay un montón de clases, entonces no podemos estar seguros acerca de la orden de carga de clases JVM, y esto puede crear un problema.
Me parece que el uso de variables estáticas para mantener el estado hace que sus programas no se puedan mantener, es básicamente como usar variables globales. La estática privada dentro de una clase no tiene el mismo problema ya que no hay código que acceda a ella desde cualquier lugar, es decir, código de espagueti. –