Comprensión de variables estáticas y variables de instancia
(Las variables estáticas también se denominan variables de clase y los métodos estáticos también se denominan métodos de clase).
¿Cuál es la diferencia entre variables estáticas y variables de instancia?
1. Las variables estáticas se modifican con la palabra clave estática y no se requieren variables de instancia.
2. Las variables estáticas pertenecen a la clase Mientras el programa esté cargado, a las variables estáticas se les asignará espacio y podrán usarse directamente.
Las variables de instancia son atributos del objeto. El espacio se asignará y se podrá usar solo después de que se cree una instancia del objeto. (Es decir, se necesita uno nuevo para usarlo)
3. Las variables de clase son propiedad de todos los objetos. Si un objeto cambia su valor, otros objetos obtendrán el resultado modificado;
Las variables de instancia son privadas del objeto. Cambiar el valor de un objeto no afecta a otros objetos.
Ejemplo:
public class StaticClass {
static; int i=5; //variable estática
int j=5; //variable de instancia
public static void main(String[] args) {
System.out.println(StaticClass.i); //Puedes hacer referencia directamente a i
StaticClass sc=new StaticClass(); //Debes crear una instancia antes de poder hacer referencia a j
System.out.println(sc.j);
}
}