Estático en Java:
Static es un modificador sin acceso. La palabra clave estática pertenece a la clase que instancia de la clase. se puede usar para adjuntar una Variable o Método a una Clase.
La palabra clave estática PUEDE usarse con:
Método
Variable
Clase anidada dentro de otra clase
Bloque de inicialización
NO PUEDE ser usado con:
Clase (no anidada)
Constructor
Interfaces
Método Clase interna local (diferencia luego clase anidada)
Métodos de clase interna
Variables de instancia
Variables locales
Ejemplo:
Imagine el siguiente ejemplo que tiene una variable de instancia llamada count que se incrementa en el constructor:
package pkg;
class StaticExample {
int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Salida:
1 1 1
Dado que la variable de instancia obtiene la memoria en el momento de la creación del objeto, cada objeto tendrá la copia de la variable de instancia, si se incrementa, no se reflejará en otros objetos.
Ahora, si cambiamos el recuento de variables de instancia a uno estático , el programa producirá resultados diferentes:
package pkg;
class StaticExample {
static int count = 0;// will get memory when instance is created
StaticExample() {
count++;
System.out.println(count);
}
public static void main(String args[]) {
StaticExample c1 = new StaticExample();
StaticExample c2 = new StaticExample();
StaticExample c3 = new StaticExample();
}
}
Salida:
1 2 3
En este caso, la variable estática obtendrá la memoria solo una vez, si algún objeto cambia el valor de la variable estática, retendrá su valor.
Estática con final:
La variable global que se declara como final y estática permanece sin cambios durante toda la ejecución. Porque, los miembros estáticos se almacenan en la memoria de la clase y se cargan solo una vez en toda la ejecución. Son comunes a todos los objetos de la clase. Si declara variables estáticas como finales, cualquiera de los objetos no puede cambiar su valor ya que es final. Por lo tanto, las variables declaradas como finales y estáticas a veces se denominan constantes. Todos los campos de las interfaces se denominan constantes, ya que son finales y estáticos por defecto.
Recurso de imagen: estática final