Variable estática en Java: ¿Qué es el método y el bloque estático? [Ejemplo]

La estática puede ser:

  1. Variables estáticas
  2. Métodos estáticos
  3. Bloques estáticos de código.

Primero veamos las variables estáticas y los métodos estáticos.

¿Qué es la variable estática en Java?

Variable estática en Java es una variable que pertenece a la clase y se inicializa solo una vez al inicio de la ejecución. Es una variable que pertenece a la clase y no al objeto (instancia). Las variables estáticas se inicializan sólo una vez, al inicio de la ejecución. Estas variables se inicializarán primero, antes de la inicialización de cualquier variable de instancia.

  • Una única copia para ser compartida por todas las instancias de la clase.
  • Se puede acceder a una variable estática directamente por el nombre de la clase y no necesita ningún objeto

Sintaxis:

<class-name>.<variable-name>

¿Qué es el método estático en Java?

Método estático en Java es un método que pertenece a la clase y no al objeto. Un método estático sólo puede acceder a datos estáticos. Es un método que pertenece a la clase y no al objeto (instancia). Un método estático sólo puede acceder a datos estáticos. No puede acceder a datos no estáticos (variables de instancia).

  • Un método estático sólo puede llamar a otros métodos estáticos y no puede llamar a un método no estático desde él.
  • Se puede acceder a un método estático directamente por el nombre de la clase y no necesita ningún objeto.
  • Un método estático no puede hacer referencia a las palabras clave "this" o "super" de ninguna manera

Sintaxis:

<class-name>.<method-name>

Nota: El método principal es estático, ya que debe ser accesible para que se ejecute una aplicación, antes de que se realice cualquier creación de instancias.


¡Aprendamos los matices de las palabras clave estáticas haciendo algunos ejercicios!

Ejemplo: cómo llamar a variables y métodos estáticos

Paso 1) copia el siguientewing código en un editor

public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}

Paso 2) Guarde y compile el código. Ejecute el código como, demostración de java.

Paso 3) El resultado esperado se muestra a continuación


Métodos estáticos y variables de Java

Following El diagrama muestra cómo se crean las variables y objetos de referencia y cómo las diferentes instancias acceden a las variables estáticas.


Métodos estáticos y variables de Java

Paso 4) Es posible acceder a una variable estática desde fuera de la clase usando la sintaxis Nombre de clase.Nombre_variable. Descomente las líneas n.° 7 y 8. Guardar, compilar y ejecutar. Observe la salida.

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

Paso 5) Descomentar las líneas 25,26 y 27. Guardar, compilar y ejecutar.

	 error: non-static variable a cannot be referenced from a static context a++; 

Paso 6) Error=? Esto se debe a que no es posible acceder a la variable de instancia "a"del método de clase estática de Java"incremento".

¿Qué es el bloque estático en Java?

El bloque estático es un bloque de declaración dentro de una clase Java que se ejecutará cuando una clase se cargue por primera vez en el JVM. La El bloque estático ayuda a inicializar los miembros de datos estáticos., al igual que los constructores ayudan a inicializar los miembros de la instancia.

class Test{
 static {
 //Code goes here
 }
}

Following El programa es el ejemplo del bloque estático de Java.

Ejemplo: cómo acceder al bloque estático

public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}

te seguiránwing salida del programa.

Value of a = 10
Value of b = 20