[Columna 60 de JavaSE] Bloque de código estático, un fragmento de código que se ejecuta durante la carga de la clase Java

Página de inicio del autor : Diseñador Xiao Zheng
Breve introducción del autor : 3 años de experiencia en desarrollo JAVA full-stack, centrándose en la tecnología JAVA, personalización del sistema, orientación remota, dedicado a la transformación digital empresarial, profesor certificado de CSDN College y Blue Bridge Cloud Course.
Dirección principal : Vue, SpringBoot, subprograma WeChat

Este artículo explica el concepto y la sintaxis de los bloques de código estático en Java y proporciona códigos de muestra. Un bloque de código estático es una pieza de código que una clase de Java ejecuta durante la carga.

inserte la descripción de la imagen aquí


1. ¿Qué es un bloque de código estático?

Un bloque de código estático es una pieza de código que se ejecuta durante el proceso de carga de la clase Java, que se utiliza para inicializar la clase .

El bloque de código estático se ejecuta cuando se carga la clase por primera vez, y solo se ejecutará una vez , su formato de sintaxis es el siguiente.

static {
    
    
    // 静态代码块的代码逻辑
}

Las características de los bloques de código estático son las siguientes 5 5A las 5 en punto, por favor estudie mucho.

  1. Los bloques de código estático se ejecutan durante la fase de carga de clases y tienen prioridad sobre otros bloques de código y constructores.
  2. Los bloques de código estático se ejecutan solo una vez y automáticamente cuando se carga la clase.
  3. Los bloques de código estático se pueden usar para inicializar variables estáticas e inicializar algunos recursos estáticos.
  4. Los bloques de código estático no pueden acceder directamente a miembros no estáticos (variables de instancia, métodos de instancia), pero pueden acceder a miembros estáticos (variables estáticas, métodos estáticos).
  5. Los bloques de código estático se ejecutan secuencialmente en el orden en que se definen .

Los bloques de código estático se utilizan a menudo para inicializar variables estáticas, cargar controladores, inicializar recursos estáticos y otras operaciones. Su función principal es realizar algunos preparativos necesarios durante la carga de clases para garantizar que los miembros estáticos de la clase se hayan inicializado correctamente antes de su uso.

inserte la descripción de la imagen aquí


2. ¿Por qué usar bloques de código estático?

En Java, la función principal del bloque de código estático es realizar algunas operaciones de inicialización específicas durante el proceso de carga de clases. Aquí hay 4 de 4 usando bloques de código estático4 escenarios comunes, estudie cuidadosamente.

  1. Inicializar variables estáticas : los bloques estáticos se pueden usar para inicializar variables estáticas, asegurándose de que se inicialicen correctamente antes de su uso. Esto es muy útil en algunos casos en los que los recursos estáticos deben prepararse con anticipación.
  2. Carga de controladores : en Java, la carga de controladores de base de datos generalmente requiere el uso de bloques de código estático. Los bloques de código estático pueden realizar operaciones de carga de controladores relacionadas durante la carga de clases, lo que garantiza que el controlador se haya cargado correctamente antes de usar la base de datos.
  3. Inicializar recursos estáticos : en algunos casos en los que los recursos estáticos deben prepararse con anticipación, se pueden usar bloques de código estático para realizar algunas operaciones de inicialización. Por ejemplo, para un programa de servidor web, la información de configuración del servidor se puede inicializar en el bloque de código estático.
  4. Ejecutar operaciones únicas : los bloques de código estático solo se ejecutan una vez cuando se carga la clase, por lo que pueden usarse para realizar algunas operaciones que solo deben ejecutarse una vez. Por ejemplo, leer archivos de configuración, establecer conexiones a bases de datos, etc.

En resumen, el bloque de código estático proporciona un mecanismo para realizar operaciones de inicialización durante la carga de la clase, que se puede utilizar para garantizar que los recursos y variables relacionados se hayan inicializado correctamente al utilizar la clase. Es muy útil en algunos escenarios específicos y puede mejorar la confiabilidad y mantenibilidad del código.

inserte la descripción de la imagen aquí


3. Cómo usar bloques de código estático

El siguiente es un código de muestra de Java que utiliza un bloque de código estático, cópielo en el entorno local e intente ejecutarlo.

public class StaticBlockExample {
    
    
    private static int count;
    private static String message;

    // 静态代码块
    static {
    
    
        count = 10;
        message = "Hello, World!";
        System.out.println("静态代码块被执行");
    }

    public static void main(String[] args) {
    
    
        System.out.println("count: " + count);
        System.out.println("message: " + message);
    }
}

En el código anterior, definimos una StaticBlockExampleclase llamada que contiene un bloque de código estático y un mainmétodo. El bloque de código estático se ejecuta cuando se carga la clase y se utiliza para inicializar las variables estáticas.

En el bloque de código estático, inicializamos counta 10 1010 ,messageinicializado aHello, World!.

En mainel método, imprimimos los valores de estas dos variables estáticas.

Cuando ejecutamos este código, generará el siguiente resultado.

静态代码块被执行
count: 10
message: Hello, World!

Se puede ver que cuando se carga la clase, se ejecuta el bloque de código estático y las variables estáticas se inicializan correctamente, por lo que podemos usar estas variables estáticas inicializadas en otros métodos.

inserte la descripción de la imagen aquí


4. Preguntas de entrevista de bloque de código estático

1. ¿Cuál es la diferencia entre un bloque de código estático y un bloque de código normal?

Respuesta: El bloque de código estático se ejecuta cuando se carga la clase, mientras que el bloque de código normal se ejecuta cuando se crea una instancia del objeto. Los bloques de código estático se ejecutan solo una vez, mientras que los bloques de código normales se ejecutan cada vez que se crea una instancia de un objeto.

2. ¿Cuál es la diferencia entre un bloque de código estático y un constructor?

Respuesta: El bloque de código estático se ejecuta cuando se carga la clase y se usa para inicializar variables miembro estáticas. El método de construcción se ejecuta cuando se crea una instancia del objeto y se utiliza para inicializar las variables miembro de la instancia.

3. ¿Cuál es la función del bloque de código estático?

Respuesta: El bloque de código estático se usa principalmente para realizar algunos preparativos necesarios durante la carga de clases, como inicializar variables estáticas, cargar controladores, etc. Asegura que los miembros estáticos de la clase se hayan inicializado correctamente antes de su uso.

4. ¿Pueden los bloques de código estático acceder a miembros no estáticos?

Respuesta: Los bloques de código estático no pueden acceder directamente a los miembros no estáticos (variables de instancia, métodos de instancia), porque se ejecuta cuando se carga la clase y los miembros no estáticos pertenecen a la instancia del objeto. Pero los bloques de código estático pueden acceder indirectamente a miembros no estáticos mediante la creación de instancias de objetos.

5. ¿Cuál es el orden de ejecución de los bloques de código estático?

Respuesta: Cuando se carga una clase, los bloques de código estático se ejecutarán secuencialmente en el orden en que se definen. Si hay varios bloques de código estático, su orden de ejecución es coherente con el orden definido.


V. Resumen

Este artículo explica el concepto y la sintaxis de los bloques de código estático en Java y proporciona códigos de muestra. En el próximo blog, explicaré los puntos de conocimiento de la encapsulación orientada a objetos de Java.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41464123/article/details/132003302
Recomendado
Clasificación