1. Inicialización de clase
Para la inicialización de clases: la inicialización de clases generalmente solo se inicializa una vez, y la inicialización de clases principalmente inicializa variables miembro estáticas.
La compilación de una clase determina el proceso de inicialización de la clase.
El archivo de clase generado por el compilador realiza principalmente los siguientes cambios en las clases definidas en el archivo fuente:
1) Primero declare las variables miembro dentro de la clase en el orden en que se definen las variables miembro estáticas.
2) Inicializar de acuerdo con la secuencia de inicialización de las variables miembro en la clase Java original.
La conversión correspondiente entre una clase java y la clase compilada es la siguiente:
Archivo fuente:
Copie el código de código de la siguiente manera:
Persona de clase pública {
nombre de cadena estática pública = "Zhang San";
edad estática pública;
estático{
edad=20;
System.out.println("Edad de inicialización");
}
dirección de cadena estática pública;
estático{
dirección="Pekín";
edad=34;
}
público estático vacío principal (String [] argumentos) {
System.out.println(nombre);
System.out.println(edad);
System.out.println(dirección);
}
}
Cuando el código fuente de Java se convierte en un archivo de clase, se convierte en un código similar al siguiente:
Copie el código de código de la siguiente manera:
Persona de clase pública {
nombre de cadena estática pública;
edad estática pública;
dirección de cadena estática pública;
estático{
nombre="Zhang San";
edad=20;
System.out.println("Edad de inicialización");
dirección="Pekín";
edad=34;
}
público estático vacío principal (String [] argumentos) {
System.out.println(nombre);
System.out.println(edad);
System.out.println(dirección);
}
}
La secuencia de inicialización se ejecuta secuencialmente de acuerdo con la secuencia de inicialización de las variables miembro de clase correspondientes después de la conversión, por lo que todas las variables miembro estáticas se declaran primero y luego se asignan, y el orden de asignación también se basa en el orden en que se ordenan las variables miembro estáticas. inicializado en el código fuente, Nota: Definir una variable miembro e inicializarla directamente es equivalente a inicializarla en un bloque de código estático, ambos en el orden en que se definen en el código fuente.
2. Generación de objetos
El proceso de inicialización para la generación de objetos es similar al proceso de inicialización de una clase, pero se agregará una etapa de constructor. El código fuente es el siguiente:
Copie el código de código de la siguiente manera:
Persona de clase pública {
{
nombre="李思";
edad=56;
System.out.println("Edad de inicialización");
dirección="Shanghái";
}
nombre de cadena pública = "Zhang San";
edad int pública = 29;
dirección de cadena pública="Pekín";
Persona pública(){
nombre="Zhao Liu";
edad=23;
dirección="Shanghái";
}
}
Después de que el compilador lo convierta en un archivo de clase, se convertirá en un código similar al siguiente:
Copie el código de código de la siguiente manera:
Persona de clase pública {
nombre de cadena pública;
edad interna pública;
dirección de cadena pública;
Persona pública(){
nombre="李思";
edad=56;
System.out.println("Edad de inicialización");
dirección="Shanghái";
nombre="Zhang San";
edad=29;
dirección="Pekín";
nombre="Zhao Liu";
edad=23;
dirección="Shanghái";
}
}
Se puede ver que la inicialización de las variables miembro en la clase y el código en el bloque de código se han movido al constructor, y las variables miembro se inicializan secuencialmente de acuerdo con el orden de inicialización del archivo fuente de Java, mientras que el código en el constructor original se mueve a la última ejecución del constructor. Nunca antes había tenido un conocimiento profundo del proceso de inicialización de clases. Simplemente no podía entender cómo inicializarlo. Solo podía recordar la secuencia de inicialización según el libro, pero la olvidé después de un tiempo, así que esta vez. Finalmente lo descubrí. Es mejor explicar el mecanismo de inicialización según un modelo. Ya no es necesario memorizarlo. Solo si lo comprendes, no podrás olvidarlo.