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.
- bloque estático
- variable estática
- 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); } }
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:
- 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.
- 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"); } }
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