"¡Hola, amigo! ¡¿Escuché que Rishi te explicó algo nuevo y emocionante?!"
"Así es, Kim".
"Mi tema no será menos interesante. Quiero contarles cómo se cargan las clases en la memoria".
Las clases en Java son archivos en el disco que contienen bytecode, que es código Java compilado.
"Sí, lo recuerdo."
La máquina Java no los carga si no es necesario. Tan pronto como hay una llamada a una clase en algún lugar del código, la máquina Java verifica si está cargada. Y si no, lo carga y lo inicializa.
Inicializar una clase implica asignar valores a todas sus variables estáticas y llamar a todos los bloques de inicialización estáticos.
"Eso parece similar a llamar a un constructor en un objeto. Pero, ¿qué es un bloque de inicialización estático?"
"Si necesita ejecutar código complejo (por ejemplo, cargar algo desde un archivo) para inicializar objetos, podemos hacerlo en un constructor. Sin embargo, las variables estáticas no tienen esta oportunidad. Pero dado que la necesidad aún persiste, puede agregue un bloque o bloques de inicialización estáticos a las clases. Son básicamente equivalentes a los constructores estáticos".
Así es como se ve:
Código | lo que realmente sucede |
---|---|
|
|
Es muy parecido a lo que sucede cuando se llama a un constructor. Incluso lo he escrito como un constructor estático (inexistente).
"Si lo entendi."
"Muy bien."
GO TO FULL VERSION