Carga de clases y ejecución de bloques estáticos mediante el modificador estático en Java

Static es una palabra clave que cuando se adjunta al método, variable, Block lo convierte en método de clase, variable de clase y bloque de clase. Puede llamar a una variable/método estático usando ClassName. JVM ejecuta el bloque estático en » TIEMPO DE CARGA DE CLASE»

Orden de ejecución:

Hay un orden en el que se inicializa el bloque/método/variable estáticos. 

  1. bloque estático
  2. variable estática
  3. Método estático

Los bloques estáticos se llaman incluso antes que el método principal, que no es más que un método estático, es decir, el punto de ejecución de cada clase. 

Nota:

A veces, se pide en las entrevistas, imprimir «HOLA» sin imprimirlo dentro del método principal o llamar a ningún método desde el principal. La respuesta es usar el bloque estático a medida que se inicializan antes que main para que pueda usarlos para imprimir cualquier cosa sin tener ninguna dependencia del método principal en Java.

Java

// Class Loading and Static Blocks
// Execution Using Static Modifier in Java
 
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // Created 3 Threads
        MyThread myThread1 = new MyThread();
        myThread1.start();
 
        MyThread myThread2 = new MyThread();
        myThread2.start();
 
        MyThread myThread3 = new MyThread();
        myThread3.start();
    }
}
 
class MyThread extends Thread {
   
    // Static Variable count is maintained across
    // all threads as it is only created once
    static int count = 0;
   
    // Non Static Variable count is maintained separately
    // for separate thread As non-static variables are
    // created for every thread
    int notStatic = 0;
    public void run()
    {
        count++;
        notStatic++;
        System.out.println("Thread = " + count);
        System.out.println("Non Static Variable Value="
                           + notStatic);
    }
}
Producción

Thread = 3
Thread = 2
Non Static Variable Value=1
Thread = 1
Non Static Variable Value=1
Non Static Variable Value=1

variable estática

Puede usar variables estáticas para ahorrar memoria o en una operación en la que desea que todos los subprocesos mantengan una variable en lugar de tener una variable diferente para cada subproceso.

Método estático

Se usa cuando los métodos son más relevantes para la clase que una instancia de una clase. Math Class en Java es un gran ejemplo en Java. Tiene todos los métodos estáticos a los que puede llamar usando un nombre de clase como max, min, pow ya que estas funciones no requieren que diferentes objetos tengan diferentes valores. Puede pasar parámetros y obtener respuestas usando className.methodName() .

bloque estático

Se usa cuando desea inicializar cualquier dato antes de que el control de ejecución vaya a otros métodos como el método principal.

Normas:

  1. Los métodos estáticos solo pueden llamar a otros métodos estáticos, es decir, no puede llamar a un método no estático desde un método estático como el método principal.
  2. El bloque estático puede usar la única variable estática directamente

Singleton Design Pattern es el patrón de diseño más utilizado en el que solo se crea y se devuelve una instancia de la clase para cada solicitud de instancia de clase. La palabra clave static se usa para crear objetos solo una vez, ya que static ocupa la memoria solo una vez y, por lo tanto, la sincronización se mantiene para cada llamada. 

A continuación se muestra el ejemplo que muestra claramente el orden de ejecución. Static Block se llama primero incluso si se escribe después del método principal. Demuestra que los bloques estáticos son lo primero que se llama incluso antes del método principal.

Java

// Class Loading and Static Blocks
// Execution Using Static Modifier in Java
 
import java.io.*;
 
class GFG {
 
    // Static Variable
    public static void main(String[] args)
    {
        System.out.println("Static Variable=" + count);
        System.out.println("Static Method");
    }
 
    // Static Variable
    static int count = 3;
 
    // Called even before Main Method
    static { System.out.println("Static Block"); }
}
Producción

Static Block
Static Variable=3
Static Method

Ejemplo de la vida real: para agregar la salida al mismo archivo de registro, se crea un objeto registrador y se pueden agregar los datos usando logger.info() en orden de inserción.

Publicación traducida automáticamente

Artículo escrito por mulchandanimanisha5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *